diff --git a/site/releases/validmind-library-releases.qmd b/site/releases/validmind-library-releases.qmd
index eb60ca92a7..526e43b84a 100644
--- a/site/releases/validmind-library-releases.qmd
+++ b/site/releases/validmind-library-releases.qmd
@@ -1,7 +1,7 @@
---
title: "{{< var validmind.developer >}} releases"
-subtitle: "Latest: `v2.9.5`"
-date: "October 7, 2025"
+subtitle: "Latest: `v2.10.0`"
+date: "October 16, 2025"
listing:
contents: ../releases/validmind-library/**/pr-*.qmd
fields: [date, title, categories, description]
diff --git a/site/validmind/_sidebar.yml b/site/validmind/_sidebar.yml
index 008da78d11..aa9e2b0d0e 100644
--- a/site/validmind/_sidebar.yml
+++ b/site/validmind/_sidebar.yml
@@ -10,7 +10,7 @@ website:
- text: "---"
- text: "Python API"
# Root level items from validmind.qmd
- - text: "`2.8.25`"
+ - text: "`2.10.0`"
file: validmind/validmind.qmd#version__
- text: "init"
file: validmind/validmind.qmd#init
@@ -40,6 +40,8 @@ website:
file: validmind/validmind.qmd#tasks
- text: "test"
file: validmind/validmind.qmd#test
+ - text: "scorer_decorator"
+ file: validmind/validmind.qmd#scorer_decorator
- text: "log_text"
file: validmind/validmind.qmd#log_text
- text: "experimental_agent"
@@ -75,6 +77,13 @@ website:
file: validmind/validmind/datasets/credit_risk/lending_club.qmd
- text: "lending_club_bias"
file: validmind/validmind/datasets/credit_risk/lending_club_bias.qmd
+ - text: "llm"
+ file: validmind/validmind/datasets/llm.qmd
+ contents:
+ - text: "rag"
+ file: validmind/validmind/datasets/llm/rag.qmd
+ - text: "rfp"
+ file: validmind/validmind/datasets/llm/rag/rfp.qmd
- text: "nlp"
file: validmind/validmind/datasets/nlp.qmd
contents:
@@ -91,6 +100,8 @@ website:
file: validmind/validmind/datasets/regression/lending_club.qmd
- text: "errors"
file: validmind/validmind/errors.qmd
+ - text: "scorer"
+ file: validmind/validmind/scorer.qmd
- text: "test_suites"
file: validmind/validmind/test_suites.qmd
contents:
@@ -407,6 +418,17 @@ website:
file: validmind/validmind/tests/model_validation/statsmodels.qmd
- text: "statsutils"
file: validmind/validmind/tests/model_validation/statsmodels/statsutils.qmd
+ - text: "plots"
+ file: validmind/validmind/tests/plots.qmd
+ contents:
+ - text: "BoxPlot"
+ file: validmind/validmind/tests/plots/BoxPlot.qmd
+ - text: "CorrelationHeatmap"
+ file: validmind/validmind/tests/plots/CorrelationHeatmap.qmd
+ - text: "HistogramPlot"
+ file: validmind/validmind/tests/plots/HistogramPlot.qmd
+ - text: "ViolinPlot"
+ file: validmind/validmind/tests/plots/ViolinPlot.qmd
- text: "prompt_validation"
file: validmind/validmind/tests/prompt_validation.qmd
contents:
@@ -426,6 +448,17 @@ website:
file: validmind/validmind/tests/prompt_validation/Specificity.qmd
- text: "ai_powered_test"
file: validmind/validmind/tests/prompt_validation/ai_powered_test.qmd
+ - text: "stats"
+ file: validmind/validmind/tests/stats.qmd
+ contents:
+ - text: "CorrelationAnalysis"
+ file: validmind/validmind/tests/stats/CorrelationAnalysis.qmd
+ - text: "DescriptiveStats"
+ file: validmind/validmind/tests/stats/DescriptiveStats.qmd
+ - text: "NormalityTests"
+ file: validmind/validmind/tests/stats/NormalityTests.qmd
+ - text: "OutlierDetection"
+ file: validmind/validmind/tests/stats/OutlierDetection.qmd
- text: "unit_metrics"
file: validmind/validmind/unit_metrics.qmd
- text: "vm_models"
diff --git a/site/validmind/validmind.qmd b/site/validmind/validmind.qmd
index d9b834caf1..e6a5fca309 100644
--- a/site/validmind/validmind.qmd
+++ b/site/validmind/validmind.qmd
@@ -27,7 +27,7 @@ To initialize the ValidMind Library, paste the code snippet with the model ident
import validmind as vm
vm.init(
- api_host = "https://api.dev.vm.validmind.ai/api/v1/tracking/tracking",
+ api_host = "https://app.prod.validmind.ai/api/v1/tracking/tracking",
api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
project = ""
@@ -44,7 +44,7 @@ After you have pasted the code snippet into your development source code and exe
::: {.signature}
-2.8.25
+2.10.0
:::
@@ -66,7 +66,7 @@ If the API key and secret are not provided, the client will attempt to retrieve
**Arguments**
-- `project (str, optional)`: The project CUID. Alias for model. Defaults to None. \[DEPRECATED\]
+- `project (str, optional)`: The project CUID. Alias for model. Defaults to None. [DEPRECATED]
- `model (str, optional)`: The model CUID. Defaults to None.
- `api_key (str, optional)`: The API key. Defaults to None.
- `api_secret (str, optional)`: The API secret. Defaults to None.
@@ -213,7 +213,7 @@ This function provides an interface to retrieve the TestSuite instance for the c
::: {.signature}
-deflog_metric(key:str,value:float,inputs:Optional\[List\[str\]\]=None,params:Optional\[Dict\[str, Any\]\]=None,recorded_at:Optional\[str\]=None,thresholds:Optional\[Dict\[str, Any\]\]=None,passed:Optional\[bool\]=None):
+deflog_metric(key:str,value:Union\[int, float\],inputs:Optional\[List\[str\]\]=None,params:Optional\[Dict\[str, Any\]\]=None,recorded_at:Optional\[str\]=None,thresholds:Optional\[Dict\[str, Any\]\]=None,passed:Optional\[bool\]=None):
:::
@@ -226,11 +226,12 @@ Unit metrics are key-value pairs where the key is the metric name and the value
**Arguments**
- `key (str)`: The metric key
-- `value (Union[int, float])`: The metric value
+- `value (Union[int, float])`: The metric value (scalar)
- `inputs (List[str])`: List of input IDs
- `params (Dict[str, Any])`: Parameters used to generate the metric
- `recorded_at (str)`: Timestamp when the metric was recorded
- `thresholds (Dict[str, Any])`: Thresholds for the metric
+- `passed (bool)`: Whether the metric passed validation thresholds
## preview_template
@@ -422,6 +423,61 @@ The function may also include a docstring. This docstring will be used and logge
- The decorated function.
+## scorer_decorator
+
+
+
+::: {.signature}
+
+defscorer(func_or_id:Union\[Callable\[..., Any\], str, None\]=None) → Callable\[\[validmind.vm_models.F\], validmind.vm_models.F\]:
+
+:::
+
+
+
+Decorator for creating and registering custom scorers
+
+This decorator registers the function it wraps as a scorer function within ValidMind under the provided ID. Once decorated, the function can be run using the `validmind.scorer.run_scorer` function.
+
+The scorer ID can be provided in three ways:
+
+1. Explicit ID: `@scorer("validmind.scorer.classification.BrierScore")`
+1. Auto-generated from path: `@scorer()` - automatically generates ID from file path
+1. Function name only: `@scorer` - uses function name with validmind.scorer prefix
+
+The function can take two different types of arguments:
+
+- Inputs: ValidMind model or dataset (or list of models/datasets). These arguments must use the following names: `model`, `models`, `dataset`, `datasets`.
+- Parameters: Any additional keyword arguments of any type (must have a default value) that can have any name.
+
+The function should return one of the following types:
+
+- Table: Either a list of dictionaries or a pandas DataFrame
+- Plot: Either a matplotlib figure or a plotly figure
+- Scalar: A single number (int or float)
+- Boolean: A single boolean value indicating whether the test passed or failed
+- List: A list of values (for row-level metrics) or a list of dictionaries with consistent keys
+- Any other type: The output will be stored as raw data for use by calling code
+
+When returning a list of dictionaries:
+
+- All dictionaries must have the same keys
+- The list length must match the number of rows in the dataset
+- Each dictionary key will become a separate column when using assign_scores
+- Column naming follows the pattern: {model_id}_{metric_name}_{dict_key}
+
+Note: Scorer outputs are not logged to the backend and are intended for use by other parts of the system (e.g., assign_scores method).
+
+The function may also include a docstring. This docstring will be used and logged as the scorer's description.
+
+**Arguments**
+
+- `func_or_id (Union[Callable[..., Any], str, None], optional)`: Either the function to decorate or the scorer ID. If None or empty string, the ID is auto-generated from the file path. Defaults to None.
+
+**Returns**
+
+- The decorated function.
+
## log_text
diff --git a/site/validmind/validmind/datasets.qmd b/site/validmind/validmind/datasets.qmd
index f02b4a9c92..2c075342e7 100644
--- a/site/validmind/validmind/datasets.qmd
+++ b/site/validmind/validmind/datasets.qmd
@@ -12,5 +12,6 @@ Example datasets that can be used with the ValidMind Library.
- [classification](datasets/classification.qmd)
- [credit_risk](datasets/credit_risk.qmd)
+- [llm](datasets/llm.qmd)
- [nlp](datasets/nlp.qmd)
- [regression](datasets/regression.qmd)
diff --git a/site/validmind/validmind/datasets/llm.qmd b/site/validmind/validmind/datasets/llm.qmd
new file mode 100644
index 0000000000..f36936c4c2
--- /dev/null
+++ b/site/validmind/validmind/datasets/llm.qmd
@@ -0,0 +1,250 @@
+---
+title: "[validmind](/validmind/validmind.qmd).llm"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+Entrypoint for LLM datasets.
+
+- [rag](llm/rag.qmd)
+
+
+
+## LLMAgentDataset
+
+
+
+::: {.signature}
+
+classLLMAgentDataset(VMDataset):
+
+:::
+
+
+
+LLM Agent Dataset for DeepEval integration with ValidMind.
+
+This dataset class allows you to use all DeepEval tests and metrics within the ValidMind evaluation framework. It stores LLM interaction data in a format compatible with both frameworks.
+
+**Arguments**
+
+- `test_cases (List[LLMTestCase])`: List of DeepEval test cases
+- `goldens (List[Golden])`: List of DeepEval golden templates
+- `deepeval_dataset (EvaluationDataset)`: DeepEval dataset instance
+
+### LLMAgentDataset
+
+
+
+::: {.signature}
+
+LLMAgentDataset(input_id:str=None,test_cases:Optional\[List\]=None,goldens:Optional\[List\]=None,deepeval_dataset:Optional\[Any\]=None,\*\*kwargs)
+
+:::
+
+
+
+Initialize LLMAgentDataset.
+
+**Arguments**
+
+- `input_id`: Identifier for the dataset
+- `test_cases`: List of DeepEval LLMTestCase objects
+- `goldens`: List of DeepEval Golden objects
+- `deepeval_dataset`: DeepEval EvaluationDataset instance
+- `**kwargs`: Additional arguments passed to VMDataset
+
+### add_golden
+
+
+
+::: {.signature}
+
+defadd_golden(self,golden):
+
+:::
+
+
+
+Add a DeepEval golden to the dataset.
+
+**Arguments**
+
+- `golden`: DeepEval Golden instance
+
+### add_test_case
+
+
+
+::: {.signature}
+
+defadd_test_case(self,test_case):
+
+:::
+
+
+
+Add a DeepEval test case to the dataset.
+
+**Arguments**
+
+- `test_case`: DeepEval LLMTestCase instance
+
+### convert_goldens_to_test_cases
+
+
+
+::: {.signature}
+
+defconvert_goldens_to_test_cases(self,llm_app_function):
+
+:::
+
+
+
+Convert goldens to test cases by generating actual outputs.
+
+**Arguments**
+
+- `llm_app_function`: Function that takes input and returns LLM output
+
+### evaluate_with_deepeval
+
+
+
+::: {.signature}
+
+defevaluate_with_deepeval(self,metrics:List,\*\*kwargs) → Dict\[str, Any\]:
+
+:::
+
+
+
+Evaluate the dataset using DeepEval metrics.
+
+**Arguments**
+
+- `metrics`: List of DeepEval metric instances
+- `**kwargs`: Additional arguments passed to deepeval.evaluate()
+
+**Returns**
+
+- Evaluation results dictionary
+
+### from_deepeval_dataset
+
+
+
+::: {.signature}
+
+@classmethod
+
+deffrom_deepeval_dataset(cls,deepeval_dataset,input_id:str='llm_agent_dataset',\*\*kwargs) → validmind.vm_models.LLMAgentDataset:
+
+:::
+
+
+
+Create LLMAgentDataset from DeepEval EvaluationDataset.
+
+**Arguments**
+
+- `deepeval_dataset`: DeepEval EvaluationDataset instance
+- `input_id`: Dataset identifier
+- `**kwargs`: Additional arguments
+
+**Returns**
+
+- LLMAgentDataset instance
+
+### from_goldens
+
+
+
+::: {.signature}
+
+@classmethod
+
+deffrom_goldens(cls,goldens:List,input_id:str='llm_agent_dataset',\*\*kwargs) → validmind.vm_models.LLMAgentDataset:
+
+:::
+
+
+
+Create LLMAgentDataset from DeepEval goldens.
+
+**Arguments**
+
+- `goldens`: List of DeepEval Golden objects
+- `input_id`: Dataset identifier
+- `**kwargs`: Additional arguments
+
+**Returns**
+
+- LLMAgentDataset instance
+
+### from_test_cases
+
+
+
+::: {.signature}
+
+@classmethod
+
+deffrom_test_cases(cls,test_cases:List,input_id:str='llm_agent_dataset',\*\*kwargs) → validmind.vm_models.LLMAgentDataset:
+
+:::
+
+
+
+Create LLMAgentDataset from DeepEval test cases.
+
+**Arguments**
+
+- `test_cases`: List of DeepEval LLMTestCase objects
+- `input_id`: Dataset identifier
+- `**kwargs`: Additional arguments
+
+**Returns**
+
+- LLMAgentDataset instance
+
+### get_deepeval_dataset
+
+
+
+::: {.signature}
+
+defget_deepeval_dataset(self):
+
+:::
+
+
+
+Get or create a DeepEval EvaluationDataset instance.
+
+**Returns**
+
+- DeepEval EvaluationDataset instance
+
+### to_deepeval_test_cases
+
+
+
+::: {.signature}
+
+defto_deepeval_test_cases(self) → List:
+
+:::
+
+
+
+Convert dataset rows back to DeepEval test cases.
+
+**Returns**
+
+- List of DeepEval LLMTestCase objects
diff --git a/site/validmind/validmind/datasets/llm/rag.qmd b/site/validmind/validmind/datasets/llm/rag.qmd
new file mode 100644
index 0000000000..533f760a4f
--- /dev/null
+++ b/site/validmind/validmind/datasets/llm/rag.qmd
@@ -0,0 +1,13 @@
+---
+title: "[validmind](/validmind/validmind.qmd).rag"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+Entrypoint for classification datasets.
+
+- [rfp](rag/rfp.qmd)
diff --git a/site/validmind/validmind/datasets/llm/rag/rfp.qmd b/site/validmind/validmind/datasets/llm/rag/rfp.qmd
new file mode 100644
index 0000000000..98337190ec
--- /dev/null
+++ b/site/validmind/validmind/datasets/llm/rag/rfp.qmd
@@ -0,0 +1,31 @@
+---
+title: "[validmind](/validmind/validmind.qmd).rfp"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## load_data
+
+
+
+::: {.signature}
+
+defload_data(full_dataset=False):
+
+:::
+
+
+
+## preprocess
+
+
+
+::: {.signature}
+
+defpreprocess(df):
+
+:::
diff --git a/site/validmind/validmind/scorer.qmd b/site/validmind/validmind/scorer.qmd
new file mode 100644
index 0000000000..819edd0dc9
--- /dev/null
+++ b/site/validmind/validmind/scorer.qmd
@@ -0,0 +1,110 @@
+---
+title: "[validmind](/validmind/validmind.qmd).scorer"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+## scorer
+
+
+
+::: {.signature}
+
+defscorer(func_or_id:Union\[Callable\[..., Any\], str, None\]=None) → Callable\[\[validmind.vm_models.F\], validmind.vm_models.F\]:
+
+:::
+
+
+
+Decorator for creating and registering custom scorers
+
+This decorator registers the function it wraps as a scorer function within ValidMind under the provided ID. Once decorated, the function can be run using the `validmind.scorer.run_scorer` function.
+
+The scorer ID can be provided in three ways:
+
+1. Explicit ID: `@scorer("validmind.scorer.classification.BrierScore")`
+1. Auto-generated from path: `@scorer()` - automatically generates ID from file path
+1. Function name only: `@scorer` - uses function name with validmind.scorer prefix
+
+The function can take two different types of arguments:
+
+- Inputs: ValidMind model or dataset (or list of models/datasets). These arguments must use the following names: `model`, `models`, `dataset`, `datasets`.
+- Parameters: Any additional keyword arguments of any type (must have a default value) that can have any name.
+
+The function should return one of the following types:
+
+- Table: Either a list of dictionaries or a pandas DataFrame
+- Plot: Either a matplotlib figure or a plotly figure
+- Scalar: A single number (int or float)
+- Boolean: A single boolean value indicating whether the test passed or failed
+- List: A list of values (for row-level metrics) or a list of dictionaries with consistent keys
+- Any other type: The output will be stored as raw data for use by calling code
+
+When returning a list of dictionaries:
+
+- All dictionaries must have the same keys
+- The list length must match the number of rows in the dataset
+- Each dictionary key will become a separate column when using assign_scores
+- Column naming follows the pattern: {model_id}_{metric_name}_{dict_key}
+
+Note: Scorer outputs are not logged to the backend and are intended for use by other parts of the system (e.g., assign_scores method).
+
+The function may also include a docstring. This docstring will be used and logged as the scorer's description.
+
+**Arguments**
+
+- `func_or_id (Union[Callable[..., Any], str, None], optional)`: Either the function to decorate or the scorer ID. If None or empty string, the ID is auto-generated from the file path. Defaults to None.
+
+**Returns**
+
+- The decorated function.
+
+
+
+## list_scorers
+
+
+
+::: {.signature}
+
+deflist_scorers(\*\*kwargs):
+
+:::
+
+
+
+List all scorers
+
+
+
+## describe_scorer
+
+
+
+::: {.signature}
+
+defdescribe_scorer(scorer_id:str,\*\*kwargs):
+
+:::
+
+
+
+Describe a scorer
+
+
+
+## run_scorer
+
+
+
+::: {.signature}
+
+defrun_scorer(scorer_id:str,\*\*kwargs):
+
+:::
+
+
+
+Run a scorer
diff --git a/site/validmind/validmind/tests.qmd b/site/validmind/validmind/tests.qmd
index 31cb608822..18e1bb0d45 100644
--- a/site/validmind/validmind/tests.qmd
+++ b/site/validmind/validmind/tests.qmd
@@ -12,7 +12,9 @@ ValidMind Tests Module
- [data_validation](tests/data_validation.qmd)
- [model_validation](tests/model_validation.qmd)
+- [plots](tests/plots.qmd)
- [prompt_validation](tests/prompt_validation.qmd)
+- [stats](tests/stats.qmd)
## list_tests
@@ -85,7 +87,7 @@ This function can be used to see test details including the test name, descripti
::: {.signature}
-defrun_test(test_id:Union\[TestID (Union of validmind.data_validation.\*, validmind.model_validation.\*, validmind.prompt_validation.\* and str), None\]=None,name:Union\[str, None\]=None,unit_metrics:Union\[List\[TestID (Unit metrics from validmind.unit_metrics.\*)\], None\]=None,inputs:Union\[Dict\[str, Any\], None\]=None,input_grid:Union\[Dict\[str, List\[Any\]\], List\[Dict\[str, Any\]\], None\]=None,params:Union\[Dict\[str, Any\], None\]=None,param_grid:Union\[Dict\[str, List\[Any\]\], List\[Dict\[str, Any\]\], None\]=None,show:bool=True,generate_description:bool=True,title:Optional\[str\]=None,post_process_fn:Union\[Callable\[\[validmind.vm_models.TestResult\], None\], None\]=None,show_params:bool=True,\*\*kwargs) → validmind.vm_models.TestResult:
+defrun_test(test_id:Union\[TestID (Union of validmind.data_validation.\*, validmind.model_validation.\*, validmind.prompt_validation.\* and str), None\]=None,name:Union\[str, None\]=None,unit_metrics:Union\[List\[TestID (Unit metrics from validmind.unit_metrics.\*)\], None\]=None,inputs:Union\[Dict\[str, Any\], None\]=None,input_grid:Union\[Dict\[str, List\[Any\]\], List\[Dict\[str, Any\]\], None\]=None,params:Union\[Dict\[str, Any\], None\]=None,param_grid:Union\[Dict\[str, List\[Any\]\], List\[Dict\[str, Any\]\], None\]=None,show:bool=True,generate_description:bool=True,title:Optional\[str\]=None,post_process_fn:Union\[Callable\[\[validmind.vm_models.TestResult\], None\], None\]=None,show_params:bool=True,context:Union\[Dict\[str, str\], None\]=None,\*\*kwargs) → validmind.vm_models.TestResult:
:::
@@ -113,6 +115,10 @@ This function is the main entry point for running tests. It can run simple unit
- `title (str)`: Custom title for the test result
- `post_process_fn (Callable[[TestResult], None])`: Function to post-process the test result
- `show_params (bool, optional)`: Whether to include parameter values in figure titles for comparison tests. Defaults to True.
+- `context (Dict[str, str])`: Context for test description generation. Supported keys:
+- 'test_description': Custom docstring to override the test's built-in documentation
+- 'instructions': Instructions for the LLM to format the description output
+- 'additional_context': Background information for the LLM to contextualize results
**Returns**
@@ -207,6 +213,61 @@ The function may also include a docstring. This docstring will be used and logge
- The decorated function.
+## scorer
+
+
+
+::: {.signature}
+
+defscorer(func_or_id:Union\[Callable\[..., Any\], str, None\]=None) → Callable\[\[validmind.vm_models.F\], validmind.vm_models.F\]:
+
+:::
+
+
+
+Decorator for creating and registering custom scorers
+
+This decorator registers the function it wraps as a scorer function within ValidMind under the provided ID. Once decorated, the function can be run using the `validmind.scorer.run_scorer` function.
+
+The scorer ID can be provided in three ways:
+
+1. Explicit ID: `@scorer("validmind.scorer.classification.BrierScore")`
+1. Auto-generated from path: `@scorer()` - automatically generates ID from file path
+1. Function name only: `@scorer` - uses function name with validmind.scorer prefix
+
+The function can take two different types of arguments:
+
+- Inputs: ValidMind model or dataset (or list of models/datasets). These arguments must use the following names: `model`, `models`, `dataset`, `datasets`.
+- Parameters: Any additional keyword arguments of any type (must have a default value) that can have any name.
+
+The function should return one of the following types:
+
+- Table: Either a list of dictionaries or a pandas DataFrame
+- Plot: Either a matplotlib figure or a plotly figure
+- Scalar: A single number (int or float)
+- Boolean: A single boolean value indicating whether the test passed or failed
+- List: A list of values (for row-level metrics) or a list of dictionaries with consistent keys
+- Any other type: The output will be stored as raw data for use by calling code
+
+When returning a list of dictionaries:
+
+- All dictionaries must have the same keys
+- The list length must match the number of rows in the dataset
+- Each dictionary key will become a separate column when using assign_scores
+- Column naming follows the pattern: {model_id}_{metric_name}_{dict_key}
+
+Note: Scorer outputs are not logged to the backend and are intended for use by other parts of the system (e.g., assign_scores method).
+
+The function may also include a docstring. This docstring will be used and logged as the scorer's description.
+
+**Arguments**
+
+- `func_or_id (Union[Callable[..., Any], str, None], optional)`: Either the function to decorate or the scorer ID. If None or empty string, the ID is auto-generated from the file path. Defaults to None.
+
+**Returns**
+
+- The decorated function.
+
## tags
diff --git a/site/validmind/validmind/tests/data_validation/ACFandPACFPlot.qmd b/site/validmind/validmind/tests/data_validation/ACFandPACFPlot.qmd
index e0a4387a6c..ffa255f3fb 100644
--- a/site/validmind/validmind/tests/data_validation/ACFandPACFPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/ACFandPACFPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defACFandPACFPlot(dataset:validmind.vm_models.VMDataset):
+defACFandPACFPlot(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ADF.qmd b/site/validmind/validmind/tests/data_validation/ADF.qmd
index cf1271f517..1742d59196 100644
--- a/site/validmind/validmind/tests/data_validation/ADF.qmd
+++ b/site/validmind/validmind/tests/data_validation/ADF.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defADF(dataset:validmind.vm_models.VMDataset):
+defADF(dataset:validmind.vm_models.VMDataset) → Dict\[str, pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/AutoAR.qmd b/site/validmind/validmind/tests/data_validation/AutoAR.qmd
index d08f176beb..ff41a4de12 100644
--- a/site/validmind/validmind/tests/data_validation/AutoAR.qmd
+++ b/site/validmind/validmind/tests/data_validation/AutoAR.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defAutoAR(dataset:validmind.vm_models.VMDataset,max_ar_order:int=3):
+defAutoAR(dataset:validmind.vm_models.VMDataset,max_ar_order:int=3) → Dict\[str, pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/AutoMA.qmd b/site/validmind/validmind/tests/data_validation/AutoMA.qmd
index 20a4cb2386..d55419847c 100644
--- a/site/validmind/validmind/tests/data_validation/AutoMA.qmd
+++ b/site/validmind/validmind/tests/data_validation/AutoMA.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defAutoMA(dataset:validmind.vm_models.VMDataset,max_ma_order:int=3):
+defAutoMA(dataset:validmind.vm_models.VMDataset,max_ma_order:int=3) → Tuple\[Dict\[str, pd.DataFrame\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/AutoStationarity.qmd b/site/validmind/validmind/tests/data_validation/AutoStationarity.qmd
index c767312666..328ff953b8 100644
--- a/site/validmind/validmind/tests/data_validation/AutoStationarity.qmd
+++ b/site/validmind/validmind/tests/data_validation/AutoStationarity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defAutoStationarity(dataset:validmind.vm_models.VMDataset,max_order:int=5,threshold:float=0.05):
+defAutoStationarity(dataset:validmind.vm_models.VMDataset,max_order:int=5,threshold:float=0.05) → Dict\[str, pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/BivariateScatterPlots.qmd b/site/validmind/validmind/tests/data_validation/BivariateScatterPlots.qmd
index aed572dd6a..5254ee7524 100644
--- a/site/validmind/validmind/tests/data_validation/BivariateScatterPlots.qmd
+++ b/site/validmind/validmind/tests/data_validation/BivariateScatterPlots.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defBivariateScatterPlots(dataset):
+defBivariateScatterPlots(dataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/BoxPierce.qmd b/site/validmind/validmind/tests/data_validation/BoxPierce.qmd
index 0f8d08564f..cdc138fc54 100644
--- a/site/validmind/validmind/tests/data_validation/BoxPierce.qmd
+++ b/site/validmind/validmind/tests/data_validation/BoxPierce.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('time_series_data', 'forecasting', 'statistical_test', 'statsmodels')
-defBoxPierce(dataset):
+defBoxPierce(dataset) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ChiSquaredFeaturesTable.qmd b/site/validmind/validmind/tests/data_validation/ChiSquaredFeaturesTable.qmd
index e71f3e3f20..794dc71ebf 100644
--- a/site/validmind/validmind/tests/data_validation/ChiSquaredFeaturesTable.qmd
+++ b/site/validmind/validmind/tests/data_validation/ChiSquaredFeaturesTable.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defChiSquaredFeaturesTable(dataset,p_threshold=0.05):
+defChiSquaredFeaturesTable(dataset,p_threshold=0.05) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ClassImbalance.qmd b/site/validmind/validmind/tests/data_validation/ClassImbalance.qmd
index 4506dd76d7..39799afe07 100644
--- a/site/validmind/validmind/tests/data_validation/ClassImbalance.qmd
+++ b/site/validmind/validmind/tests/data_validation/ClassImbalance.qmd
@@ -22,7 +22,7 @@ Threshold based tests
@tasks('classification')
-defClassImbalance(dataset:validmind.vm_models.VMDataset,min_percent_threshold:int=10) → Tuple\[Dict\[str, Any\], go.Figure, bool\]:
+defClassImbalance(dataset:validmind.vm_models.VMDataset,min_percent_threshold:int=10) → Tuple\[Dict\[str, Any\], go.Figure, bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/DatasetDescription.qmd b/site/validmind/validmind/tests/data_validation/DatasetDescription.qmd
index c3c8e31fc5..bdd706f477 100644
--- a/site/validmind/validmind/tests/data_validation/DatasetDescription.qmd
+++ b/site/validmind/validmind/tests/data_validation/DatasetDescription.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression', 'text_classification', 'text_summarization')
-defDatasetDescription(dataset:validmind.vm_models.VMDataset):
+defDatasetDescription(dataset:validmind.vm_models.VMDataset) → Tuple\[Dict\[str, List\[Dict\[str, Any\]\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/DatasetSplit.qmd b/site/validmind/validmind/tests/data_validation/DatasetSplit.qmd
index dd682148ff..e2c259bece 100644
--- a/site/validmind/validmind/tests/data_validation/DatasetSplit.qmd
+++ b/site/validmind/validmind/tests/data_validation/DatasetSplit.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression', 'text_classification', 'text_summarization')
-defDatasetSplit(datasets:List\[validmind.vm_models.VMDataset\]):
+defDatasetSplit(datasets:List\[validmind.vm_models.VMDataset\]) → Tuple\[List\[Dict\[str, Any\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/DescriptiveStatistics.qmd b/site/validmind/validmind/tests/data_validation/DescriptiveStatistics.qmd
index d2fa820db8..856687c1b8 100644
--- a/site/validmind/validmind/tests/data_validation/DescriptiveStatistics.qmd
+++ b/site/validmind/validmind/tests/data_validation/DescriptiveStatistics.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defDescriptiveStatistics(dataset:validmind.vm_models.VMDataset):
+defDescriptiveStatistics(dataset:validmind.vm_models.VMDataset) → Dict\[str, Any\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/DickeyFullerGLS.qmd b/site/validmind/validmind/tests/data_validation/DickeyFullerGLS.qmd
index f7d9c1e07a..643f1ed2a2 100644
--- a/site/validmind/validmind/tests/data_validation/DickeyFullerGLS.qmd
+++ b/site/validmind/validmind/tests/data_validation/DickeyFullerGLS.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defDickeyFullerGLS(dataset:validmind.vm_models.VMDataset):
+defDickeyFullerGLS(dataset:validmind.vm_models.VMDataset) → Tuple\[Dict\[str, Any\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/Duplicates.qmd b/site/validmind/validmind/tests/data_validation/Duplicates.qmd
index 682fa9eeb2..c11a5a923f 100644
--- a/site/validmind/validmind/tests/data_validation/Duplicates.qmd
+++ b/site/validmind/validmind/tests/data_validation/Duplicates.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defDuplicates(dataset,min_threshold=1):
+defDuplicates(dataset,min_threshold=1) → Tuple\[Dict\[str, Any\], bool\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/EngleGrangerCoint.qmd b/site/validmind/validmind/tests/data_validation/EngleGrangerCoint.qmd
index 98121b529b..dcf4dedda5 100644
--- a/site/validmind/validmind/tests/data_validation/EngleGrangerCoint.qmd
+++ b/site/validmind/validmind/tests/data_validation/EngleGrangerCoint.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defEngleGrangerCoint(dataset:validmind.vm_models.VMDataset,threshold:float=0.05):
+defEngleGrangerCoint(dataset:validmind.vm_models.VMDataset,threshold:float=0.05) → Dict\[str, pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/FeatureTargetCorrelationPlot.qmd b/site/validmind/validmind/tests/data_validation/FeatureTargetCorrelationPlot.qmd
index 6300fb2618..ffd473456f 100644
--- a/site/validmind/validmind/tests/data_validation/FeatureTargetCorrelationPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/FeatureTargetCorrelationPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defFeatureTargetCorrelationPlot(dataset,fig_height=600):
+defFeatureTargetCorrelationPlot(dataset,fig_height=600) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/HighCardinality.qmd b/site/validmind/validmind/tests/data_validation/HighCardinality.qmd
index 9bae65aaa8..37b7b18dd4 100644
--- a/site/validmind/validmind/tests/data_validation/HighCardinality.qmd
+++ b/site/validmind/validmind/tests/data_validation/HighCardinality.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defHighCardinality(dataset:validmind.vm_models.VMDataset,num_threshold:int=100,percent_threshold:float=0.1,threshold_type:str='percent'):
+defHighCardinality(dataset:validmind.vm_models.VMDataset,num_threshold:int=100,percent_threshold:float=0.1,threshold_type:str='percent') → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/HighPearsonCorrelation.qmd b/site/validmind/validmind/tests/data_validation/HighPearsonCorrelation.qmd
index f7becf7831..0c1e969769 100644
--- a/site/validmind/validmind/tests/data_validation/HighPearsonCorrelation.qmd
+++ b/site/validmind/validmind/tests/data_validation/HighPearsonCorrelation.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defHighPearsonCorrelation(dataset:validmind.vm_models.VMDataset,max_threshold:float=0.3,top_n_correlations:int=10,feature_columns:list=None):
+defHighPearsonCorrelation(dataset:validmind.vm_models.VMDataset,max_threshold:float=0.3,top_n_correlations:int=10,feature_columns:list=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/IQROutliersBarPlot.qmd b/site/validmind/validmind/tests/data_validation/IQROutliersBarPlot.qmd
index ca5ed977de..796ebd2fe3 100644
--- a/site/validmind/validmind/tests/data_validation/IQROutliersBarPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/IQROutliersBarPlot.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defIQROutliersBarPlot(dataset:validmind.vm_models.VMDataset,threshold:float=1.5,fig_width:int=800):
+defIQROutliersBarPlot(dataset:validmind.vm_models.VMDataset,threshold:float=1.5,fig_width:int=800) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
@@ -49,7 +49,7 @@ The examination invokes a series of steps:
1. For every numeric feature in the dataset, the 25th percentile (Q1) and 75th percentile (Q3) are calculated before deriving the Interquartile Range (IQR), the difference between Q1 and Q3.
1. Subsequently, the metric calculates the lower and upper thresholds by subtracting Q1 from the `threshold` times IQR and adding Q3 to `threshold` times IQR, respectively. The default `threshold` is set at 1.5.
1. Any value in the feature that falls below the lower threshold or exceeds the upper threshold is labeled as an outlier.
-1. The number of outliers are tallied for different percentiles, such as \[0-25\], \[25-50\], \[50-75\], and \[75-100\].
+1. The number of outliers are tallied for different percentiles, such as [0-25], [25-50], [50-75], and [75-100].
1. These counts are employed to construct a bar plot for the feature, showcasing the distribution of outliers across different percentiles.
### Signs of High Risk
diff --git a/site/validmind/validmind/tests/data_validation/IQROutliersTable.qmd b/site/validmind/validmind/tests/data_validation/IQROutliersTable.qmd
index 824bdcb204..4d972b664a 100644
--- a/site/validmind/validmind/tests/data_validation/IQROutliersTable.qmd
+++ b/site/validmind/validmind/tests/data_validation/IQROutliersTable.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defIQROutliersTable(dataset:validmind.vm_models.VMDataset,threshold:float=1.5):
+defIQROutliersTable(dataset:validmind.vm_models.VMDataset,threshold:float=1.5) → Tuple\[Dict\[str, Any\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/IsolationForestOutliers.qmd b/site/validmind/validmind/tests/data_validation/IsolationForestOutliers.qmd
index 2c2659aa99..3ca95ba2e1 100644
--- a/site/validmind/validmind/tests/data_validation/IsolationForestOutliers.qmd
+++ b/site/validmind/validmind/tests/data_validation/IsolationForestOutliers.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defIsolationForestOutliers(dataset:validmind.vm_models.VMDataset,random_state:int=0,contamination:float=0.1,feature_columns:list=None):
+defIsolationForestOutliers(dataset:validmind.vm_models.VMDataset,random_state:int=0,contamination:float=0.1,feature_columns:list=None) → Tuple\[matplotlib.validmind.vm_models.figure.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/JarqueBera.qmd b/site/validmind/validmind/tests/data_validation/JarqueBera.qmd
index 2a1ae958fb..2ae8490816 100644
--- a/site/validmind/validmind/tests/data_validation/JarqueBera.qmd
+++ b/site/validmind/validmind/tests/data_validation/JarqueBera.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('tabular_data', 'data_distribution', 'statistical_test', 'statsmodels')
-defJarqueBera(dataset):
+defJarqueBera(dataset) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/KPSS.qmd b/site/validmind/validmind/tests/data_validation/KPSS.qmd
index 4e3db67fdb..c626ab5d66 100644
--- a/site/validmind/validmind/tests/data_validation/KPSS.qmd
+++ b/site/validmind/validmind/tests/data_validation/KPSS.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('data_validation')
-defKPSS(dataset:validmind.vm_models.VMDataset):
+defKPSS(dataset:validmind.vm_models.VMDataset) → Dict\[str, Any\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/LJungBox.qmd b/site/validmind/validmind/tests/data_validation/LJungBox.qmd
index 8670192635..fb76a292e2 100644
--- a/site/validmind/validmind/tests/data_validation/LJungBox.qmd
+++ b/site/validmind/validmind/tests/data_validation/LJungBox.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('time_series_data', 'forecasting', 'statistical_test', 'statsmodels')
-defLJungBox(dataset):
+defLJungBox(dataset) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/LaggedCorrelationHeatmap.qmd b/site/validmind/validmind/tests/data_validation/LaggedCorrelationHeatmap.qmd
index e96b90f107..c73d433739 100644
--- a/site/validmind/validmind/tests/data_validation/LaggedCorrelationHeatmap.qmd
+++ b/site/validmind/validmind/tests/data_validation/LaggedCorrelationHeatmap.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defLaggedCorrelationHeatmap(dataset:validmind.vm_models.VMDataset,num_lags:int=10):
+defLaggedCorrelationHeatmap(dataset:validmind.vm_models.VMDataset,num_lags:int=10) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/MissingValues.qmd b/site/validmind/validmind/tests/data_validation/MissingValues.qmd
index da471664ac..2fbfe85188 100644
--- a/site/validmind/validmind/tests/data_validation/MissingValues.qmd
+++ b/site/validmind/validmind/tests/data_validation/MissingValues.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defMissingValues(dataset:validmind.vm_models.VMDataset,min_threshold:int=1):
+defMissingValues(dataset:validmind.vm_models.VMDataset,min_threshold:int=1) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/MissingValuesBarPlot.qmd b/site/validmind/validmind/tests/data_validation/MissingValuesBarPlot.qmd
index 8f85c8448d..5d23a99224 100644
--- a/site/validmind/validmind/tests/data_validation/MissingValuesBarPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/MissingValuesBarPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defMissingValuesBarPlot(dataset:validmind.vm_models.VMDataset,threshold:int=80,fig_height:int=600):
+defMissingValuesBarPlot(dataset:validmind.vm_models.VMDataset,threshold:int=80,fig_height:int=600) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/MutualInformation.qmd b/site/validmind/validmind/tests/data_validation/MutualInformation.qmd
index f75ad94644..47615d46e0 100644
--- a/site/validmind/validmind/tests/data_validation/MutualInformation.qmd
+++ b/site/validmind/validmind/tests/data_validation/MutualInformation.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defMutualInformation(dataset:validmind.vm_models.VMDataset,min_threshold:float=0.01,task:str='classification'):
+defMutualInformation(dataset:validmind.vm_models.VMDataset,min_threshold:float=0.01,task:str='classification') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/PearsonCorrelationMatrix.qmd b/site/validmind/validmind/tests/data_validation/PearsonCorrelationMatrix.qmd
index 15d513cb86..d140fac92d 100644
--- a/site/validmind/validmind/tests/data_validation/PearsonCorrelationMatrix.qmd
+++ b/site/validmind/validmind/tests/data_validation/PearsonCorrelationMatrix.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defPearsonCorrelationMatrix(dataset):
+defPearsonCorrelationMatrix(dataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/PhillipsPerronArch.qmd b/site/validmind/validmind/tests/data_validation/PhillipsPerronArch.qmd
index 2bbcc79c5c..77ae3081ec 100644
--- a/site/validmind/validmind/tests/data_validation/PhillipsPerronArch.qmd
+++ b/site/validmind/validmind/tests/data_validation/PhillipsPerronArch.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defPhillipsPerronArch(dataset:validmind.vm_models.VMDataset):
+defPhillipsPerronArch(dataset:validmind.vm_models.VMDataset) → Dict\[str, Any\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ProtectedClassesCombination.qmd b/site/validmind/validmind/tests/data_validation/ProtectedClassesCombination.qmd
index dae223206f..88c60a23d4 100644
--- a/site/validmind/validmind/tests/data_validation/ProtectedClassesCombination.qmd
+++ b/site/validmind/validmind/tests/data_validation/ProtectedClassesCombination.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defProtectedClassesCombination(dataset,model,protected_classes=None):
+defProtectedClassesCombination(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,protected_classes=None) → Tuple\[Dict\[str, pd.DataFrame\], Dict\[str, pd.DataFrame\], go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ProtectedClassesDescription.qmd b/site/validmind/validmind/tests/data_validation/ProtectedClassesDescription.qmd
index 41d15fc9b4..a618ed3fcd 100644
--- a/site/validmind/validmind/tests/data_validation/ProtectedClassesDescription.qmd
+++ b/site/validmind/validmind/tests/data_validation/ProtectedClassesDescription.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defProtectedClassesDescription(dataset,protected_classes=None):
+defProtectedClassesDescription(dataset,protected_classes=None) → Tuple\[pd.DataFrame, Union\[go.Figure, List\[go.Figure\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ProtectedClassesDisparity.qmd b/site/validmind/validmind/tests/data_validation/ProtectedClassesDisparity.qmd
index aa8efafc24..72048296ea 100644
--- a/site/validmind/validmind/tests/data_validation/ProtectedClassesDisparity.qmd
+++ b/site/validmind/validmind/tests/data_validation/ProtectedClassesDisparity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defProtectedClassesDisparity(dataset,model,protected_classes=None,disparity_tolerance=1.25,metrics=\['fnr', 'fpr', 'tpr'\]):
+defProtectedClassesDisparity(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,protected_classes=None,disparity_tolerance=1.25,metrics=\['fnr', 'fpr', 'tpr'\]) → Tuple\[pd.DataFrame, List\[bytes\], Any, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.qmd b/site/validmind/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.qmd
index 42a2e8bd6e..bd2ca215a2 100644
--- a/site/validmind/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.qmd
+++ b/site/validmind/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.qmd
@@ -90,7 +90,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defProtectedClassesThresholdOptimizer(dataset,pipeline=None,protected_classes=None,X_train=None,y_train=None):
+defProtectedClassesThresholdOptimizer(dataset:validmind.vm_models.VMDataset,pipeline=None,protected_classes=None,X_train=None,y_train=None) → Tuple\[Dict\[str, Any\], matplotlib.validmind.vm_models.figure.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/RollingStatsPlot.qmd b/site/validmind/validmind/tests/data_validation/RollingStatsPlot.qmd
index 6e432c13c3..b0b48a835f 100644
--- a/site/validmind/validmind/tests/data_validation/RollingStatsPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/RollingStatsPlot.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('regression')
-defRollingStatsPlot(dataset:validmind.vm_models.VMDataset,window_size:int=12):
+defRollingStatsPlot(dataset:validmind.vm_models.VMDataset,window_size:int=12) → Tuple\[plt.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/RunsTest.qmd b/site/validmind/validmind/tests/data_validation/RunsTest.qmd
index 61b6ec3e17..3b65062281 100644
--- a/site/validmind/validmind/tests/data_validation/RunsTest.qmd
+++ b/site/validmind/validmind/tests/data_validation/RunsTest.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('tabular_data', 'statistical_test', 'statsmodels')
-defRunsTest(dataset):
+defRunsTest(dataset) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ScatterPlot.qmd b/site/validmind/validmind/tests/data_validation/ScatterPlot.qmd
index 0da71096d3..3f1044f4d1 100644
--- a/site/validmind/validmind/tests/data_validation/ScatterPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/ScatterPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defScatterPlot(dataset):
+defScatterPlot(dataset) → matplotlib.validmind.vm_models.figure.Figure:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ScoreBandDefaultRates.qmd b/site/validmind/validmind/tests/data_validation/ScoreBandDefaultRates.qmd
index 7369e8ad66..e3393f7e1b 100644
--- a/site/validmind/validmind/tests/data_validation/ScoreBandDefaultRates.qmd
+++ b/site/validmind/validmind/tests/data_validation/ScoreBandDefaultRates.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defScoreBandDefaultRates(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,score_column:str='score',score_bands:list=None):
+defScoreBandDefaultRates(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,score_column:str='score',score_bands:list=None) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/SeasonalDecompose.qmd b/site/validmind/validmind/tests/data_validation/SeasonalDecompose.qmd
index ab267d4da4..804a8c7d20 100644
--- a/site/validmind/validmind/tests/data_validation/SeasonalDecompose.qmd
+++ b/site/validmind/validmind/tests/data_validation/SeasonalDecompose.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defSeasonalDecompose(dataset:validmind.vm_models.VMDataset,seasonal_model:str='additive'):
+defSeasonalDecompose(dataset:validmind.vm_models.VMDataset,seasonal_model:str='additive') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ShapiroWilk.qmd b/site/validmind/validmind/tests/data_validation/ShapiroWilk.qmd
index 33806279a9..9b33b9867e 100644
--- a/site/validmind/validmind/tests/data_validation/ShapiroWilk.qmd
+++ b/site/validmind/validmind/tests/data_validation/ShapiroWilk.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('tabular_data', 'data_distribution', 'statistical_test')
-defShapiroWilk(dataset):
+defShapiroWilk(dataset) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/Skewness.qmd b/site/validmind/validmind/tests/data_validation/Skewness.qmd
index 114c527941..d0af948b99 100644
--- a/site/validmind/validmind/tests/data_validation/Skewness.qmd
+++ b/site/validmind/validmind/tests/data_validation/Skewness.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defSkewness(dataset,max_threshold=1):
+defSkewness(dataset,max_threshold=1) → Tuple\[Dict\[str, List\[Dict\[str, Any\]\]\], bool\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/SpreadPlot.qmd b/site/validmind/validmind/tests/data_validation/SpreadPlot.qmd
index 9868e269a9..45ef3e10b7 100644
--- a/site/validmind/validmind/tests/data_validation/SpreadPlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/SpreadPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defSpreadPlot(dataset:validmind.vm_models.VMDataset):
+defSpreadPlot(dataset:validmind.vm_models.VMDataset) → Tuple\[plt.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TabularCategoricalBarPlots.qmd b/site/validmind/validmind/tests/data_validation/TabularCategoricalBarPlots.qmd
index 237869d09f..1c0dce9d42 100644
--- a/site/validmind/validmind/tests/data_validation/TabularCategoricalBarPlots.qmd
+++ b/site/validmind/validmind/tests/data_validation/TabularCategoricalBarPlots.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defTabularCategoricalBarPlots(dataset:validmind.vm_models.VMDataset):
+defTabularCategoricalBarPlots(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TabularDateTimeHistograms.qmd b/site/validmind/validmind/tests/data_validation/TabularDateTimeHistograms.qmd
index 5469fb6ff7..065c174a50 100644
--- a/site/validmind/validmind/tests/data_validation/TabularDateTimeHistograms.qmd
+++ b/site/validmind/validmind/tests/data_validation/TabularDateTimeHistograms.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defTabularDateTimeHistograms(dataset:validmind.vm_models.VMDataset):
+defTabularDateTimeHistograms(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TabularDescriptionTables.qmd b/site/validmind/validmind/tests/data_validation/TabularDescriptionTables.qmd
index 7b1c86ee7a..2602e0a240 100644
--- a/site/validmind/validmind/tests/data_validation/TabularDescriptionTables.qmd
+++ b/site/validmind/validmind/tests/data_validation/TabularDescriptionTables.qmd
@@ -90,7 +90,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defTabularDescriptionTables(dataset):
+defTabularDescriptionTables(dataset) → Tuple\[pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TabularNumericalHistograms.qmd b/site/validmind/validmind/tests/data_validation/TabularNumericalHistograms.qmd
index b8124e9caa..c3521ff748 100644
--- a/site/validmind/validmind/tests/data_validation/TabularNumericalHistograms.qmd
+++ b/site/validmind/validmind/tests/data_validation/TabularNumericalHistograms.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defTabularNumericalHistograms(dataset:validmind.vm_models.VMDataset):
+defTabularNumericalHistograms(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TargetRateBarPlots.qmd b/site/validmind/validmind/tests/data_validation/TargetRateBarPlots.qmd
index d055f8bd27..4ca10891e3 100644
--- a/site/validmind/validmind/tests/data_validation/TargetRateBarPlots.qmd
+++ b/site/validmind/validmind/tests/data_validation/TargetRateBarPlots.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defTargetRateBarPlots(dataset:validmind.vm_models.VMDataset):
+defTargetRateBarPlots(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesDescription.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesDescription.qmd
index d0e8baaed4..d6d35e28b1 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesDescription.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesDescription.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesDescription(dataset):
+defTimeSeriesDescription(dataset) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.qmd
index 75dddb44e2..bdf2fc1253 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesDescriptiveStatistics(dataset):
+defTimeSeriesDescriptiveStatistics(dataset) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesFrequency.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesFrequency.qmd
index e5cd2a3e65..4bc50ed9e3 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesFrequency.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesFrequency.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesFrequency(dataset:validmind.vm_models.VMDataset):
+defTimeSeriesFrequency(dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, Any\]\], go.Figure, bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesHistogram.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesHistogram.qmd
index a59e10f230..abbc0c53cb 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesHistogram.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesHistogram.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defTimeSeriesHistogram(dataset,nbins=30):
+defTimeSeriesHistogram(dataset,nbins=30) → Tuple\[go.Figure\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesLinePlot.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesLinePlot.qmd
index c467e94671..37de8b8844 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesLinePlot.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesLinePlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesLinePlot(dataset:validmind.vm_models.VMDataset):
+defTimeSeriesLinePlot(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesMissingValues.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesMissingValues.qmd
index 396864c8ee..f819db1254 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesMissingValues.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesMissingValues.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesMissingValues(dataset:validmind.vm_models.VMDataset,min_threshold:int=1):
+defTimeSeriesMissingValues(dataset:validmind.vm_models.VMDataset,min_threshold:int=1) → Tuple\[List\[Dict\[str, Any\]\], go.Figure, go.Figure, bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TimeSeriesOutliers.qmd b/site/validmind/validmind/tests/data_validation/TimeSeriesOutliers.qmd
index 75c54077f0..7e88b5caad 100644
--- a/site/validmind/validmind/tests/data_validation/TimeSeriesOutliers.qmd
+++ b/site/validmind/validmind/tests/data_validation/TimeSeriesOutliers.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defTimeSeriesOutliers(dataset:validmind.vm_models.VMDataset,zscore_threshold:int=3):
+defTimeSeriesOutliers(dataset:validmind.vm_models.VMDataset,zscore_threshold:int=3) → Tuple\[pd.DataFrame, List\[go.Figure\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/TooManyZeroValues.qmd b/site/validmind/validmind/tests/data_validation/TooManyZeroValues.qmd
index c01535e6a4..9f2ed62c53 100644
--- a/site/validmind/validmind/tests/data_validation/TooManyZeroValues.qmd
+++ b/site/validmind/validmind/tests/data_validation/TooManyZeroValues.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'classification')
-defTooManyZeroValues(dataset:validmind.vm_models.VMDataset,max_percent_threshold:float=0.03):
+defTooManyZeroValues(dataset:validmind.vm_models.VMDataset,max_percent_threshold:float=0.03) → Tuple\[List\[Dict\[str, Any\]\], bool\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/UniqueRows.qmd b/site/validmind/validmind/tests/data_validation/UniqueRows.qmd
index 1bb43a4a87..018d585c64 100644
--- a/site/validmind/validmind/tests/data_validation/UniqueRows.qmd
+++ b/site/validmind/validmind/tests/data_validation/UniqueRows.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'classification')
-defUniqueRows(dataset:validmind.vm_models.VMDataset,min_percent_threshold:float=1):
+defUniqueRows(dataset:validmind.vm_models.VMDataset,min_percent_threshold:float=1) → Tuple\[List\[Dict\[str, Any\]\], bool\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/WOEBinPlots.qmd b/site/validmind/validmind/tests/data_validation/WOEBinPlots.qmd
index f11d7ec8f6..46f23a56d5 100644
--- a/site/validmind/validmind/tests/data_validation/WOEBinPlots.qmd
+++ b/site/validmind/validmind/tests/data_validation/WOEBinPlots.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defWOEBinPlots(dataset:validmind.vm_models.VMDataset,breaks_adj:list=None,fig_height:int=600,fig_width:int=500):
+defWOEBinPlots(dataset:validmind.vm_models.VMDataset,breaks_adj:list=None,fig_height:int=600,fig_width:int=500) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/WOEBinTable.qmd b/site/validmind/validmind/tests/data_validation/WOEBinTable.qmd
index 70b1292d01..3fd16167a4 100644
--- a/site/validmind/validmind/tests/data_validation/WOEBinTable.qmd
+++ b/site/validmind/validmind/tests/data_validation/WOEBinTable.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defWOEBinTable(dataset:validmind.vm_models.VMDataset,breaks_adj:list=None):
+defWOEBinTable(dataset:validmind.vm_models.VMDataset,breaks_adj:list=None) → Tuple\[Dict\[str, pd.DataFrame\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/ZivotAndrewsArch.qmd b/site/validmind/validmind/tests/data_validation/ZivotAndrewsArch.qmd
index 11030f277c..b553b55e26 100644
--- a/site/validmind/validmind/tests/data_validation/ZivotAndrewsArch.qmd
+++ b/site/validmind/validmind/tests/data_validation/ZivotAndrewsArch.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defZivotAndrewsArch(dataset:validmind.vm_models.VMDataset):
+defZivotAndrewsArch(dataset:validmind.vm_models.VMDataset) → Tuple\[Dict\[str, Any\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/CommonWords.qmd b/site/validmind/validmind/tests/data_validation/nlp/CommonWords.qmd
index a2e036f51f..9c7033d449 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/CommonWords.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/CommonWords.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defCommonWords(dataset:validmind.vm_models.VMDataset):
+defCommonWords(dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/Hashtags.qmd b/site/validmind/validmind/tests/data_validation/nlp/Hashtags.qmd
index ca9beeea3a..cc2cc2df58 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/Hashtags.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/Hashtags.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defHashtags(dataset:validmind.vm_models.VMDataset,top_hashtags:int=25):
+defHashtags(dataset:validmind.vm_models.VMDataset,top_hashtags:int=25) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/LanguageDetection.qmd b/site/validmind/validmind/tests/data_validation/nlp/LanguageDetection.qmd
index 33023a95d0..e94aae0172 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/LanguageDetection.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/LanguageDetection.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defLanguageDetection(dataset):
+defLanguageDetection(dataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/Mentions.qmd b/site/validmind/validmind/tests/data_validation/nlp/Mentions.qmd
index 6e4f4069ae..9f6b99ce98 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/Mentions.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/Mentions.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defMentions(dataset:validmind.vm_models.VMDataset,top_mentions:int=25):
+defMentions(dataset:validmind.vm_models.VMDataset,top_mentions:int=25) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.qmd b/site/validmind/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.qmd
index fb166026a8..7f71fca2e4 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('nlp')
-defPolarityAndSubjectivity(dataset,threshold_subjectivity=0.5,threshold_polarity=0):
+defPolarityAndSubjectivity(dataset,threshold_subjectivity=0.5,threshold_polarity=0) → Tuple\[go.Figure, Dict\[str, pd.DataFrame\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/Punctuations.qmd b/site/validmind/validmind/tests/data_validation/nlp/Punctuations.qmd
index 4befae9d52..3a336eaa4f 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/Punctuations.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/Punctuations.qmd
@@ -22,7 +22,7 @@ Metrics functions for any Pandas-compatible datasets
@tasks('text_classification', 'text_summarization', 'nlp')
-defPunctuations(dataset,count_mode='token'):
+defPunctuations(dataset,count_mode='token') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/Sentiment.qmd b/site/validmind/validmind/tests/data_validation/nlp/Sentiment.qmd
index d14251e322..0b9684e1be 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/Sentiment.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/Sentiment.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('nlp')
-defSentiment(dataset):
+defSentiment(dataset) → Tuple\[plt.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/StopWords.qmd b/site/validmind/validmind/tests/data_validation/nlp/StopWords.qmd
index 8aa52c38d9..47eb32099b 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/StopWords.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/StopWords.qmd
@@ -22,7 +22,7 @@ Threshold based tests
@tasks('text_classification', 'text_summarization')
-defStopWords(dataset:validmind.vm_models.VMDataset,min_percent_threshold:float=0.5,num_words:int=25):
+defStopWords(dataset:validmind.vm_models.VMDataset,min_percent_threshold:float=0.5,num_words:int=25) → Tuple\[Dict\[str, pd.DataFrame\], go.Figure, bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/TextDescription.qmd b/site/validmind/validmind/tests/data_validation/nlp/TextDescription.qmd
index 463d89065f..0ff37cfe8c 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/TextDescription.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/TextDescription.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defTextDescription(dataset:validmind.vm_models.VMDataset,unwanted_tokens:set={'s', "s'", 'mr', 'ms', 'mrs', 'dr', "'s", ' ', "''", 'dollar', 'us', '\`\`'},lang:str='english'):
+defTextDescription(dataset:validmind.vm_models.VMDataset,unwanted_tokens:set={'s', "s'", 'mr', 'ms', 'mrs', 'dr', "'s", ' ', "''", 'dollar', 'us', '\`\`'},lang:str='english') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/data_validation/nlp/Toxicity.qmd b/site/validmind/validmind/tests/data_validation/nlp/Toxicity.qmd
index 459834d9be..4f14ee13f6 100644
--- a/site/validmind/validmind/tests/data_validation/nlp/Toxicity.qmd
+++ b/site/validmind/validmind/tests/data_validation/nlp/Toxicity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('nlp')
-defToxicity(dataset):
+defToxicity(dataset) → Tuple\[plt.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/BertScore.qmd b/site/validmind/validmind/tests/model_validation/BertScore.qmd
index 89e519ca4e..160bff95f7 100644
--- a/site/validmind/validmind/tests/model_validation/BertScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/BertScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defBertScore(dataset,model,evaluation_model='distilbert-base-uncased'):
+defBertScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,evaluation_model='distilbert-base-uncased') → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/BleuScore.qmd b/site/validmind/validmind/tests/model_validation/BleuScore.qmd
index e438938107..5454fb756a 100644
--- a/site/validmind/validmind/tests/model_validation/BleuScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/BleuScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defBleuScore(dataset,model):
+defBleuScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/ClusterSizeDistribution.qmd b/site/validmind/validmind/tests/model_validation/ClusterSizeDistribution.qmd
index e1a8052f7b..812fc1cfc3 100644
--- a/site/validmind/validmind/tests/model_validation/ClusterSizeDistribution.qmd
+++ b/site/validmind/validmind/tests/model_validation/ClusterSizeDistribution.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defClusterSizeDistribution(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel):
+defClusterSizeDistribution(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/ContextualRecall.qmd b/site/validmind/validmind/tests/model_validation/ContextualRecall.qmd
index 07106e6376..01c9187d02 100644
--- a/site/validmind/validmind/tests/model_validation/ContextualRecall.qmd
+++ b/site/validmind/validmind/tests/model_validation/ContextualRecall.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defContextualRecall(dataset,model):
+defContextualRecall(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/FeaturesAUC.qmd b/site/validmind/validmind/tests/model_validation/FeaturesAUC.qmd
index 56c68b2683..1ae41cd6c8 100644
--- a/site/validmind/validmind/tests/model_validation/FeaturesAUC.qmd
+++ b/site/validmind/validmind/tests/model_validation/FeaturesAUC.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defFeaturesAUC(dataset:validmind.vm_models.VMDataset,fontsize:int=12,figure_height:int=500):
+defFeaturesAUC(dataset:validmind.vm_models.VMDataset,fontsize:int=12,figure_height:int=500) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/MeteorScore.qmd b/site/validmind/validmind/tests/model_validation/MeteorScore.qmd
index 05b669cacf..174efaeefd 100644
--- a/site/validmind/validmind/tests/model_validation/MeteorScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/MeteorScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defMeteorScore(dataset,model):
+defMeteorScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/ModelMetadata.qmd b/site/validmind/validmind/tests/model_validation/ModelMetadata.qmd
index 3de4bf844d..45686fc90b 100644
--- a/site/validmind/validmind/tests/model_validation/ModelMetadata.qmd
+++ b/site/validmind/validmind/tests/model_validation/ModelMetadata.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defModelMetadata(model):
+defModelMetadata(model:validmind.vm_models.VMModel) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/model_validation/ModelPredictionResiduals.qmd b/site/validmind/validmind/tests/model_validation/ModelPredictionResiduals.qmd
index fb0c409599..dc1bfd1eac 100644
--- a/site/validmind/validmind/tests/model_validation/ModelPredictionResiduals.qmd
+++ b/site/validmind/validmind/tests/model_validation/ModelPredictionResiduals.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('residual_analysis', 'visualization')
-defModelPredictionResiduals(dataset,model,nbins=100,p_value_threshold=0.05,start_date=None,end_date=None):
+defModelPredictionResiduals(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,nbins:int=100,p_value_threshold:float=0.05,start_date:Optional\[str\]=None,end_date:Optional\[str\]=None) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/RegardScore.qmd b/site/validmind/validmind/tests/model_validation/RegardScore.qmd
index 510341da7a..36bdbdeb3c 100644
--- a/site/validmind/validmind/tests/model_validation/RegardScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/RegardScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defRegardScore(dataset,model):
+defRegardScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/RegressionResidualsPlot.qmd b/site/validmind/validmind/tests/model_validation/RegressionResidualsPlot.qmd
index 0c330d5235..c3f54dc273 100644
--- a/site/validmind/validmind/tests/model_validation/RegressionResidualsPlot.qmd
+++ b/site/validmind/validmind/tests/model_validation/RegressionResidualsPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionResidualsPlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,bin_size:float=0.1):
+defRegressionResidualsPlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,bin_size:float=0.1) → Tuple\[go.Figure, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/RougeScore.qmd b/site/validmind/validmind/tests/model_validation/RougeScore.qmd
index afd4d8271d..054c863542 100644
--- a/site/validmind/validmind/tests/model_validation/RougeScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/RougeScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defRougeScore(dataset,model,metric='rouge-1'):
+defRougeScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,metric:str='rouge-1') → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionWithCI.qmd b/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionWithCI.qmd
index ae74963b16..33fbccd3a2 100644
--- a/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionWithCI.qmd
+++ b/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionWithCI.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defTimeSeriesPredictionWithCI(dataset,model,confidence=0.95):
+defTimeSeriesPredictionWithCI(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,confidence:float=0.95) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionsPlot.qmd b/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionsPlot.qmd
index 3e67ebb14e..5aecc022df 100644
--- a/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionsPlot.qmd
+++ b/site/validmind/validmind/tests/model_validation/TimeSeriesPredictionsPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defTimeSeriesPredictionsPlot(dataset,model):
+defTimeSeriesPredictionsPlot(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.qmd b/site/validmind/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.qmd
index 60b00b3f29..d823c5a45e 100644
--- a/site/validmind/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.qmd
+++ b/site/validmind/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defTimeSeriesR2SquareBySegments(dataset,model,segments=None):
+defTimeSeriesR2SquareBySegments(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,segments:Optional\[int\]=None) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/TokenDisparity.qmd b/site/validmind/validmind/tests/model_validation/TokenDisparity.qmd
index 236ebc7ff2..9d4dd31941 100644
--- a/site/validmind/validmind/tests/model_validation/TokenDisparity.qmd
+++ b/site/validmind/validmind/tests/model_validation/TokenDisparity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defTokenDisparity(dataset,model):
+defTokenDisparity(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/ToxicityScore.qmd b/site/validmind/validmind/tests/model_validation/ToxicityScore.qmd
index f9b99c0511..683fd150e5 100644
--- a/site/validmind/validmind/tests/model_validation/ToxicityScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/ToxicityScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defToxicityScore(dataset,model):
+defToxicityScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.qmd b/site/validmind/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.qmd
index 4ee45faa2b..91a910eeea 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defAdjustedMutualInformation(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defAdjustedMutualInformation(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/AdjustedRandIndex.qmd b/site/validmind/validmind/tests/model_validation/sklearn/AdjustedRandIndex.qmd
index 8785c28601..6c4d0e9a45 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/AdjustedRandIndex.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/AdjustedRandIndex.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defAdjustedRandIndex(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defAdjustedRandIndex(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/CalibrationCurve.qmd b/site/validmind/validmind/tests/model_validation/sklearn/CalibrationCurve.qmd
index aa7ec86fc7..2dd18710a1 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/CalibrationCurve.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/CalibrationCurve.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defCalibrationCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,n_bins:int=10):
+defCalibrationCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,n_bins:int=10) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ClassifierPerformance.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ClassifierPerformance.qmd
index 5a652ec0da..9b021eb70e 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ClassifierPerformance.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ClassifierPerformance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defClassifierPerformance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,average:str='macro'):
+defClassifierPerformance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,average:str='macro') → Dict\[str, List\[Dict\[str, float\]\]\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.qmd
index fac8d44063..b17dbf87db 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.qmd
@@ -77,7 +77,7 @@ The test implements multiple threshold optimization methods:
- `dataset`: VMDataset containing features and target
- `model`: VMModel containing predictions
-- `methods`: List of methods to compare (default: \['youden', 'f1', 'precision_recall'\])
+- `methods`: List of methods to compare (default: ['youden', 'f1', 'precision_recall'])
- `target_recall`: Target recall value if using 'target_recall' method
**Returns**
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.qmd
index 79071e15f2..d7caf30e00 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defClusterCosineSimilarity(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defClusterCosineSimilarity(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.qmd
index 9557693de7..67ac7c6b72 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defClusterPerformanceMetrics(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defClusterPerformanceMetrics(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/CompletenessScore.qmd b/site/validmind/validmind/tests/model_validation/sklearn/CompletenessScore.qmd
index 1b6e3aa20f..75a1394329 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/CompletenessScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/CompletenessScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defCompletenessScore(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defCompletenessScore(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ConfusionMatrix.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ConfusionMatrix.qmd
index a05a0207d4..02c455b124 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ConfusionMatrix.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ConfusionMatrix.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defConfusionMatrix(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,threshold:float=0.5):
+defConfusionMatrix(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,threshold:float=0.5) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/FeatureImportance.qmd b/site/validmind/validmind/tests/model_validation/sklearn/FeatureImportance.qmd
index 2e5be43a58..e3888ab35c 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/FeatureImportance.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/FeatureImportance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defFeatureImportance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,num_features:int=3):
+defFeatureImportance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,num_features:int=3) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.qmd b/site/validmind/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.qmd
index 1b0658b570..a32beb1861 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defFowlkesMallowsScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel):
+defFowlkesMallowsScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/HomogeneityScore.qmd b/site/validmind/validmind/tests/model_validation/sklearn/HomogeneityScore.qmd
index 92fede7ad7..2e1b99658e 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/HomogeneityScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/HomogeneityScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defHomogeneityScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel):
+defHomogeneityScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/HyperParametersTuning.qmd b/site/validmind/validmind/tests/model_validation/sklearn/HyperParametersTuning.qmd
index 87d7b88196..c9eb89fd6d 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/HyperParametersTuning.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/HyperParametersTuning.qmd
@@ -14,10 +14,6 @@ toc-expand: 4
::: {.signature}
-@tags('sklearn', 'model_performance')
-
-@tasks('classification', 'clustering')
-
defcustom_recall(y_true,y_pred_proba,threshold=0.5):
:::
@@ -34,7 +30,7 @@ toc-expand: 4
@tasks('clustering', 'classification')
-defHyperParametersTuning(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,param_grid:dict,scoring:Union\[str, List, Dict\]=None,thresholds:Union\[float, List\[float\]\]=None,fit_params:dict=None):
+defHyperParametersTuning(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,param_grid:dict,scoring:Union\[str, List, Dict\]=None,thresholds:Union\[float, List\[float\]\]=None,fit_params:dict=None) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.qmd b/site/validmind/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.qmd
index 7f9351fe1a..15a0553f0b 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defKMeansClustersOptimization(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,n_clusters:Union\[List\[int\], None\]=None):
+defKMeansClustersOptimization(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,n_clusters:Optional\[List\[int\]\]=None) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/MinimumAccuracy.qmd b/site/validmind/validmind/tests/model_validation/sklearn/MinimumAccuracy.qmd
index 8cfaf54000..ea84247940 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/MinimumAccuracy.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/MinimumAccuracy.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defMinimumAccuracy(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.7):
+defMinimumAccuracy(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.7) → Tuple\[List\[Dict\[str, float\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/MinimumF1Score.qmd b/site/validmind/validmind/tests/model_validation/sklearn/MinimumF1Score.qmd
index 78de3af744..46ac8af161 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/MinimumF1Score.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/MinimumF1Score.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defMinimumF1Score(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.5):
+defMinimumF1Score(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.5) → Tuple\[List\[Dict\[str, float\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.qmd b/site/validmind/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.qmd
index 3698dd80d1..54092f8a10 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defMinimumROCAUCScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.5):
+defMinimumROCAUCScore(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,min_threshold:float=0.5) → Tuple\[List\[Dict\[str, float\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ModelParameters.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ModelParameters.qmd
index 91942186a4..7d80a75616 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ModelParameters.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ModelParameters.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defModelParameters(model,model_params=None):
+defModelParameters(model:validmind.vm_models.VMModel,model_params:Optional\[List\[str\]\]=None) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.qmd
index 95ffbc9e53..7519112df5 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defModelsPerformanceComparison(dataset:validmind.vm_models.VMDataset,models:list\[validmind.vm_models.VMModel\]):
+defModelsPerformanceComparison(dataset:validmind.vm_models.VMDataset,models:list\[validmind.vm_models.VMModel\]) → Dict\[str, List\[Dict\[str, float\]\]\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/OverfitDiagnosis.qmd b/site/validmind/validmind/tests/model_validation/sklearn/OverfitDiagnosis.qmd
index 659d21b8e8..4fe4b4e129 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/OverfitDiagnosis.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/OverfitDiagnosis.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defOverfitDiagnosis(model:validmind.vm_models.VMModel,datasets:List\[validmind.vm_models.VMDataset\],metric:str=None,cut_off_threshold:float=DEFAULT_THRESHOLD):
+defOverfitDiagnosis(model:validmind.vm_models.VMModel,datasets:List\[validmind.vm_models.VMDataset\],metric:str=None,cut_off_threshold:float=DEFAULT_THRESHOLD) → Tuple\[Dict\[str, List\[Dict\[str, float\]\]\], go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.qmd b/site/validmind/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.qmd
index 8e292cbb1e..958e80e57c 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defPermutationFeatureImportance(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,fontsize:Union\[int, None\]=None,figure_height:Union\[int, None\]=None):
+defPermutationFeatureImportance(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,fontsize:Optional\[int\]=None,figure_height:Optional\[int\]=None) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.qmd b/site/validmind/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.qmd
index bf276645c4..4b24c79744 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.qmd
@@ -34,7 +34,7 @@ Taken from: https://towardsdatascience.com/checking-model-stability-and-populati
@tasks('classification', 'text_classification')
-defPopulationStabilityIndex(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,num_bins:int=10,mode:str='fixed'):
+defPopulationStabilityIndex(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,num_bins:int=10,mode:str='fixed') → Tuple\[Dict\[str, List\[Dict\[str, float\]\]\], go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.qmd b/site/validmind/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.qmd
index a7e10a3bad..03ddeffcab 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defPrecisionRecallCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defPrecisionRecallCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ROCCurve.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ROCCurve.qmd
index 92060aa54a..ee48df500e 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ROCCurve.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ROCCurve.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defROCCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defROCCurve(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrors.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrors.qmd
index 9f3dd1a771..339cd0708b 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrors.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrors.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'classification')
-defRegressionErrors(model,dataset):
+defRegressionErrors(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.qmd
index 75818f8197..a5ae5849e5 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defRegressionErrorsComparison(datasets,models):
+defRegressionErrorsComparison(datasets:List\[validmind.vm_models.VMDataset\],models:List\[validmind.vm_models.VMModel\]) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RegressionPerformance.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RegressionPerformance.qmd
index c2df7cf1f3..cc09eab5d7 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RegressionPerformance.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RegressionPerformance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionPerformance(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defRegressionPerformance(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2Square.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2Square.qmd
index 36dd19d9aa..a4e2bbb873 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2Square.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2Square.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionR2Square(dataset,model):
+defRegressionR2Square(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.qmd
index 6dd1ab46d0..c0891af894 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression', 'time_series_forecasting')
-defRegressionR2SquareComparison(datasets,models):
+defRegressionR2SquareComparison(datasets:List\[validmind.vm_models.VMDataset\],models:List\[validmind.vm_models.VMModel\]) → pd.DataFrame:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.qmd b/site/validmind/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.qmd
index bc848d43d3..ee9e008703 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defRobustnessDiagnosis(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,metric:str=None,scaling_factor_std_dev_list:List\[float\]=DEFAULT_STD_DEV_LIST,performance_decay_threshold:float=DEFAULT_DECAY_THRESHOLD):
+defRobustnessDiagnosis(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,metric:str=None,scaling_factor_std_dev_list:List\[float\]=DEFAULT_STD_DEV_LIST,performance_decay_threshold:float=DEFAULT_DECAY_THRESHOLD) → Tuple\[pd.DataFrame, go.Figure, bool\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.qmd b/site/validmind/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.qmd
index b3d5e9938a..8adce4377b 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defScoreProbabilityAlignment(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,score_column:str='score',n_bins:int=10):
+defScoreProbabilityAlignment(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,score_column:str='score',n_bins:int=10) → Tuple\[pd.DataFrame, go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/SilhouettePlot.qmd b/site/validmind/validmind/tests/model_validation/sklearn/SilhouettePlot.qmd
index ebeb63e69e..05c49f8309 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/SilhouettePlot.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/SilhouettePlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defSilhouettePlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defSilhouettePlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[Dict\[str, float\], go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/TrainingTestDegradation.qmd b/site/validmind/validmind/tests/model_validation/sklearn/TrainingTestDegradation.qmd
index 11c84b21b1..884c524939 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/TrainingTestDegradation.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/TrainingTestDegradation.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defTrainingTestDegradation(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,max_threshold:float=0.1):
+defTrainingTestDegradation(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,max_threshold:float=0.1) → Tuple\[List\[Dict\[str, float\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/VMeasure.qmd b/site/validmind/validmind/tests/model_validation/sklearn/VMeasure.qmd
index d4ee8dbe49..be7bfea70a 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/VMeasure.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/VMeasure.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('clustering')
-defVMeasure(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel):
+defVMeasure(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.qmd b/site/validmind/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.qmd
index 236cefe910..906ccc9170 100644
--- a/site/validmind/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.qmd
+++ b/site/validmind/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'text_classification')
-defWeakspotsDiagnosis(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,features_columns:Union\[List\[str\], None\]=None,metrics:Union\[Dict\[str, Callable\], None\]=None,thresholds:Union\[Dict\[str, float\], None\]=None):
+defWeakspotsDiagnosis(datasets:List\[validmind.vm_models.VMDataset\],model:validmind.vm_models.VMModel,features_columns:Optional\[List\[str\]\]=None,metrics:Optional\[Dict\[str, Callable\]\]=None,thresholds:Optional\[Dict\[str, float\]\]=None) → Tuple\[pd.DataFrame, go.Figure, bool\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/AutoARIMA.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/AutoARIMA.qmd
index 279ea069fa..8e055c73a5 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/AutoARIMA.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/AutoARIMA.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defAutoARIMA(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defAutoARIMA(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → List\[Dict\[str, float\]\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.qmd
index ab8c922d2e..35fa4f666d 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defCumulativePredictionProbabilities(dataset,model,title='Cumulative Probabilities'):
+defCumulativePredictionProbabilities(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,title:str='Cumulative Probabilities') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.qmd
index 9f5138dbf1..36a7fc4d1d 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tags('time_series_data', 'forecasting', 'statistical_test', 'statsmodels')
-defDurbinWatsonTest(dataset,model,threshold=\[1.5, 2.5\]):
+defDurbinWatsonTest(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,threshold:List\[float\]=\[1.5, 2.5\]) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/GINITable.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/GINITable.qmd
index fefcc4e355..b0ab32ab84 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/GINITable.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/GINITable.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defGINITable(dataset,model):
+defGINITable(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[pd.DataFrame, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.qmd
index 11f34d86bc..5f3ceccca3 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defKolmogorovSmirnov(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,dist:str='norm'):
+defKolmogorovSmirnov(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,dist:str='norm') → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/Lilliefors.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/Lilliefors.qmd
index 616c53c523..7ae0e271dd 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/Lilliefors.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/Lilliefors.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification', 'regression')
-defLilliefors(dataset:validmind.vm_models.VMDataset):
+defLilliefors(dataset:validmind.vm_models.VMDataset) → List\[Dict\[str, float\]\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.qmd
index cec69295a8..82627a62b1 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defPredictionProbabilitiesHistogram(dataset,model,title='Histogram of Predictive Probabilities'):
+defPredictionProbabilitiesHistogram(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,title:str='Histogram of Predictive Probabilities') → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionCoeffs.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionCoeffs.qmd
index 999e7c2d16..5e7ee4867e 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionCoeffs.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionCoeffs.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionCoeffs(model):
+defRegressionCoeffs(model:validmind.vm_models.VMModel) → Tuple\[go.Figure, validmind.vm_models.RawData, pd.DataFrame\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.qmd
index 4a9c3653d6..4db55ce49d 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionFeatureSignificance(model:validmind.vm_models.VMModel,fontsize:int=10,p_threshold:float=0.05):
+defRegressionFeatureSignificance(model:validmind.vm_models.VMModel,fontsize:int=10,p_threshold:float=0.05) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.qmd
index ab3b8a9923..e3b8498ee2 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionModelForecastPlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,start_date:Union\[str, None\]=None,end_date:Union\[str, None\]=None):
+defRegressionModelForecastPlot(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset,start_date:Optional\[str\]=None,end_date:Optional\[str\]=None) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.qmd
index b5a20af5cb..b2bd9d2f34 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionModelForecastPlotLevels(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset):
+defRegressionModelForecastPlotLevels(model:validmind.vm_models.VMModel,dataset:validmind.vm_models.VMDataset) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.qmd
index f46376133c..682551d832 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.qmd
@@ -30,7 +30,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionModelSensitivityPlot(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,shocks:List\[float\]=\[0.1\],transformation:Union\[str, None\]=None):
+defRegressionModelSensitivityPlot(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,shocks:List\[float\]=\[0.1\],transformation:Union\[str, None\]=None) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSummary.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSummary.qmd
index 0d6ffd512b..552c74513a 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSummary.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionModelSummary.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionModelSummary(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel):
+defRegressionModelSummary(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel) → Tuple\[List\[Dict\[str, float\]\], validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.qmd
index c541a9efe9..4148a0bd60 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('regression')
-defRegressionPermutationFeatureImportance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,fontsize:int=12,figure_height:int=500):
+defRegressionPermutationFeatureImportance(dataset:validmind.vm_models.VMDataset,model:validmind.vm_models.VMModel,fontsize:int=12,figure_height:int=500) → Tuple\[go.Figure, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/model_validation/statsmodels/ScorecardHistogram.qmd b/site/validmind/validmind/tests/model_validation/statsmodels/ScorecardHistogram.qmd
index e0b59fe457..ae1b107b37 100644
--- a/site/validmind/validmind/tests/model_validation/statsmodels/ScorecardHistogram.qmd
+++ b/site/validmind/validmind/tests/model_validation/statsmodels/ScorecardHistogram.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('classification')
-defScorecardHistogram(dataset,title='Histogram of Scores',score_column='score'):
+defScorecardHistogram(dataset:validmind.vm_models.VMDataset,title:str='Histogram of Scores',score_column:str='score') → go.Figure:
:::
diff --git a/site/validmind/validmind/tests/plots.qmd b/site/validmind/validmind/tests/plots.qmd
new file mode 100644
index 0000000000..7d55dedf8a
--- /dev/null
+++ b/site/validmind/validmind/tests/plots.qmd
@@ -0,0 +1,12 @@
+---
+title: "[validmind](/validmind/validmind.qmd).plots"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+- [BoxPlot](plots/BoxPlot.qmd)
+- [CorrelationHeatmap](plots/CorrelationHeatmap.qmd)
+- [HistogramPlot](plots/HistogramPlot.qmd)
+- [ViolinPlot](plots/ViolinPlot.qmd)
diff --git a/site/validmind/validmind/tests/plots/BoxPlot.qmd b/site/validmind/validmind/tests/plots/BoxPlot.qmd
new file mode 100644
index 0000000000..6054feb956
--- /dev/null
+++ b/site/validmind/validmind/tests/plots/BoxPlot.qmd
@@ -0,0 +1,63 @@
+---
+title: "[validmind](/validmind/validmind.qmd).BoxPlot"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## BoxPlot
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'visualization', 'data_quality')
+
+@tasks('classification', 'regression', 'clustering')
+
+defBoxPlot(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,group_by:Optional\[str\]=None,width:int=1200,height:int=600,colors:Optional\[List\[str\]\]=None,show_outliers:bool=True,title_prefix:str='Box Plot of') → go.Figure:
+
+:::
+
+
+
+Generates customizable box plots for numerical features in a dataset with optional grouping using Plotly.
+
+### Purpose
+
+This test provides a flexible way to visualize the distribution of numerical features through interactive box plots, with optional grouping by categorical variables. Box plots are effective for identifying outliers, comparing distributions across groups, and understanding the spread and central tendency of the data.
+
+### Test Mechanism
+
+The test creates interactive box plots for specified numerical columns (or all numerical columns if none specified). It supports various customization options including:
+
+- Grouping by categorical variables
+- Customizable colors and styling
+- Outlier display options
+- Interactive hover information
+- Zoom and pan capabilities
+
+### Signs of High Risk
+
+- Presence of many outliers indicating data quality issues
+- Highly skewed distributions
+- Large differences in variance across groups
+- Unexpected patterns in grouped data
+
+### Strengths
+
+- Clear visualization of distribution statistics (median, quartiles, outliers)
+- Interactive Plotly plots with hover information and zoom capabilities
+- Effective for comparing distributions across groups
+- Handles missing values appropriately
+- Highly customizable appearance
+
+### Limitations
+
+- Limited to numerical features only
+- May not be suitable for continuous variables with many unique values
+- Visual interpretation may be subjective
+- Less effective with very large datasets
diff --git a/site/validmind/validmind/tests/plots/CorrelationHeatmap.qmd b/site/validmind/validmind/tests/plots/CorrelationHeatmap.qmd
new file mode 100644
index 0000000000..410a51410f
--- /dev/null
+++ b/site/validmind/validmind/tests/plots/CorrelationHeatmap.qmd
@@ -0,0 +1,64 @@
+---
+title: "[validmind](/validmind/validmind.qmd).CorrelationHeatmap"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## CorrelationHeatmap
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'visualization', 'correlation')
+
+@tasks('classification', 'regression', 'clustering')
+
+defCorrelationHeatmap(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,method:str='pearson',show_values:bool=True,colorscale:str='RdBu',width:int=800,height:int=600,mask_upper:bool=False,threshold:Optional\[float\]=None,title:str='Correlation Heatmap') → go.Figure:
+
+:::
+
+
+
+Generates customizable correlation heatmap plots for numerical features in a dataset using Plotly.
+
+### Purpose
+
+This test provides a flexible way to visualize correlations between numerical features in a dataset using interactive Plotly heatmaps. It supports different correlation methods and extensive customization options for the heatmap appearance, making it suitable for exploring feature relationships in data analysis.
+
+### Test Mechanism
+
+The test computes correlation coefficients between specified numerical columns (or all numerical columns if none specified) using the specified method. It then creates an interactive heatmap visualization with customizable appearance options including:
+
+- Different correlation methods (pearson, spearman, kendall)
+- Color schemes and annotations
+- Masking options for upper triangle
+- Threshold filtering for significant correlations
+- Interactive hover information
+
+### Signs of High Risk
+
+- Very high correlations (>0.9) between features indicating multicollinearity
+- Unexpected correlation patterns that contradict domain knowledge
+- Features with no correlation to any other variables
+- Strong correlations with the target variable that might indicate data leakage
+
+### Strengths
+
+- Supports multiple correlation methods
+- Interactive Plotly plots with hover information and zoom capabilities
+- Highly customizable visualization options
+- Can handle missing values appropriately
+- Provides clear visual representation of feature relationships
+- Optional thresholding to focus on significant correlations
+
+### Limitations
+
+- Limited to numerical features only
+- Cannot capture non-linear relationships effectively
+- May be difficult to interpret with many features
+- Correlation does not imply causation
diff --git a/site/validmind/validmind/tests/plots/HistogramPlot.qmd b/site/validmind/validmind/tests/plots/HistogramPlot.qmd
new file mode 100644
index 0000000000..f9610ff5da
--- /dev/null
+++ b/site/validmind/validmind/tests/plots/HistogramPlot.qmd
@@ -0,0 +1,65 @@
+---
+title: "[validmind](/validmind/validmind.qmd).HistogramPlot"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## HistogramPlot
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'visualization', 'data_quality')
+
+@tasks('classification', 'regression', 'clustering')
+
+defHistogramPlot(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,bins:Union\[int, str, List\]=30,color:str='steelblue',opacity:float=0.7,show_kde:bool=True,normalize:bool=False,log_scale:bool=False,title_prefix:str='Histogram of',width:int=1200,height:int=800,n_cols:int=2,vertical_spacing:float=0.15,horizontal_spacing:float=0.1) → go.Figure:
+
+:::
+
+
+
+Generates customizable histogram plots for numerical features in a dataset using Plotly.
+
+### Purpose
+
+This test provides a flexible way to visualize the distribution of numerical features in a dataset. It allows for extensive customization of the histogram appearance and behavior through parameters, making it suitable for various exploratory data analysis tasks.
+
+### Test Mechanism
+
+The test creates histogram plots for specified numerical columns (or all numerical columns if none specified). It supports various customization options including:
+
+- Number of bins or bin edges
+- Color and opacity
+- Kernel density estimation overlay
+- Logarithmic scaling
+- Normalization options
+- Configurable subplot layout (columns and spacing)
+
+### Signs of High Risk
+
+- Highly skewed distributions that may indicate data quality issues
+- Unexpected bimodal or multimodal distributions
+- Presence of extreme outliers
+- Empty or sparse distributions
+
+### Strengths
+
+- Highly customizable visualization options
+- Interactive Plotly plots with zoom, pan, and hover capabilities
+- Supports both single and multiple column analysis
+- Provides insights into data distribution patterns
+- Can handle different data types and scales
+- Configurable subplot layout for better visualization
+
+### Limitations
+
+- Limited to numerical features only
+- Visual interpretation may be subjective
+- May not be suitable for high-dimensional datasets
+- Performance may degrade with very large datasets
diff --git a/site/validmind/validmind/tests/plots/ViolinPlot.qmd b/site/validmind/validmind/tests/plots/ViolinPlot.qmd
new file mode 100644
index 0000000000..8927034241
--- /dev/null
+++ b/site/validmind/validmind/tests/plots/ViolinPlot.qmd
@@ -0,0 +1,56 @@
+---
+title: "[validmind](/validmind/validmind.qmd).ViolinPlot"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## ViolinPlot
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'visualization', 'distribution')
+
+@tasks('classification', 'regression', 'clustering')
+
+defViolinPlot(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,group_by:Optional\[str\]=None,width:int=800,height:int=600) → validmind.vm_models.px.validmind.vm_models.violin:
+
+:::
+
+
+
+Generates interactive violin plots for numerical features using Plotly.
+
+### Purpose
+
+This test creates violin plots to visualize the distribution of numerical features, showing both the probability density and summary statistics. Violin plots combine aspects of box plots and kernel density estimation for rich distribution visualization.
+
+### Test Mechanism
+
+The test creates violin plots for specified numerical columns, with optional grouping by categorical variables. Each violin shows the distribution shape, quartiles, and median values.
+
+### Signs of High Risk
+
+- Multimodal distributions that might indicate mixed populations
+- Highly skewed distributions suggesting data quality issues
+- Large differences in distribution shapes across groups
+- Unusual distribution patterns that contradict domain expectations
+
+### Strengths
+
+- Shows detailed distribution shape information
+- Interactive Plotly visualization with hover details
+- Effective for comparing distributions across groups
+- Combines density estimation with quartile information
+
+### Limitations
+
+- Limited to numerical features only
+- Requires sufficient data points for meaningful density estimation
+- May not be suitable for discrete variables
+- Can be misleading with very small sample sizes
diff --git a/site/validmind/validmind/tests/prompt_validation/Bias.qmd b/site/validmind/validmind/tests/prompt_validation/Bias.qmd
index 432baf87d2..d3f03f5fd7 100644
--- a/site/validmind/validmind/tests/prompt_validation/Bias.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Bias.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defBias(model,min_threshold=7,judge_llm=None):
+defBias(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/Clarity.qmd b/site/validmind/validmind/tests/prompt_validation/Clarity.qmd
index b87fbb28e2..d2e97f6695 100644
--- a/site/validmind/validmind/tests/prompt_validation/Clarity.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Clarity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defClarity(model,min_threshold=7,judge_llm=None):
+defClarity(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/Conciseness.qmd b/site/validmind/validmind/tests/prompt_validation/Conciseness.qmd
index 5faa96884d..a3bcb96124 100644
--- a/site/validmind/validmind/tests/prompt_validation/Conciseness.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Conciseness.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defConciseness(model,min_threshold=7,judge_llm=None):
+defConciseness(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/Delimitation.qmd b/site/validmind/validmind/tests/prompt_validation/Delimitation.qmd
index 7fca0a8463..4a5e7d3929 100644
--- a/site/validmind/validmind/tests/prompt_validation/Delimitation.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Delimitation.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defDelimitation(model,min_threshold=7,judge_llm=None):
+defDelimitation(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/NegativeInstruction.qmd b/site/validmind/validmind/tests/prompt_validation/NegativeInstruction.qmd
index 27bd4e53f3..93fa681f4c 100644
--- a/site/validmind/validmind/tests/prompt_validation/NegativeInstruction.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/NegativeInstruction.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defNegativeInstruction(model,min_threshold=7,judge_llm=None):
+defNegativeInstruction(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/Robustness.qmd b/site/validmind/validmind/tests/prompt_validation/Robustness.qmd
index f6fdd3ec46..5205ff6957 100644
--- a/site/validmind/validmind/tests/prompt_validation/Robustness.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Robustness.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defRobustness(model,dataset,num_tests=10,judge_llm=None):
+defRobustness(model,dataset,num_tests=10,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/prompt_validation/Specificity.qmd b/site/validmind/validmind/tests/prompt_validation/Specificity.qmd
index d1bffe708f..e58c59a1a6 100644
--- a/site/validmind/validmind/tests/prompt_validation/Specificity.qmd
+++ b/site/validmind/validmind/tests/prompt_validation/Specificity.qmd
@@ -18,7 +18,7 @@ toc-expand: 4
@tasks('text_classification', 'text_summarization')
-defSpecificity(model,min_threshold=7,judge_llm=None):
+defSpecificity(model,min_threshold=7,judge_llm=None) → Tuple\[List\[Dict\[str, Any\]\], bool, validmind.vm_models.RawData\]:
:::
diff --git a/site/validmind/validmind/tests/stats.qmd b/site/validmind/validmind/tests/stats.qmd
new file mode 100644
index 0000000000..1a0c2b1657
--- /dev/null
+++ b/site/validmind/validmind/tests/stats.qmd
@@ -0,0 +1,12 @@
+---
+title: "[validmind](/validmind/validmind.qmd).stats"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+- [CorrelationAnalysis](stats/CorrelationAnalysis.qmd)
+- [DescriptiveStats](stats/DescriptiveStats.qmd)
+- [NormalityTests](stats/NormalityTests.qmd)
+- [OutlierDetection](stats/OutlierDetection.qmd)
diff --git a/site/validmind/validmind/tests/stats/CorrelationAnalysis.qmd b/site/validmind/validmind/tests/stats/CorrelationAnalysis.qmd
new file mode 100644
index 0000000000..44fb901085
--- /dev/null
+++ b/site/validmind/validmind/tests/stats/CorrelationAnalysis.qmd
@@ -0,0 +1,62 @@
+---
+title: "[validmind](/validmind/validmind.qmd).CorrelationAnalysis"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## CorrelationAnalysis
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'statistics', 'correlation')
+
+@tasks('classification', 'regression', 'clustering')
+
+defCorrelationAnalysis(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,method:str='pearson',significance_level:float=0.05,min_correlation:float=0.1) → Dict\[str, Any\]:
+
+:::
+
+
+
+Performs comprehensive correlation analysis with significance testing for numerical features.
+
+### Purpose
+
+This test conducts detailed correlation analysis between numerical features, including correlation coefficients, significance testing, and identification of significant relationships. It helps identify multicollinearity, feature relationships, and potential redundancies in the dataset.
+
+### Test Mechanism
+
+The test computes correlation coefficients using the specified method and performs statistical significance testing for each correlation pair. It provides:
+
+- Correlation matrix with significance indicators
+- List of significant correlations above threshold
+- Summary statistics about correlation patterns
+- Identification of highly correlated feature pairs
+
+### Signs of High Risk
+
+- Very high correlations (>0.9) indicating potential multicollinearity
+- Many significant correlations suggesting complex feature interactions
+- Features with no significant correlations to others (potential isolation)
+- Unexpected correlation patterns contradicting domain knowledge
+
+### Strengths
+
+- Provides statistical significance testing for correlations
+- Supports multiple correlation methods (Pearson, Spearman, Kendall)
+- Identifies potentially problematic high correlations
+- Filters results by minimum correlation threshold
+- Comprehensive summary of correlation patterns
+
+### Limitations
+
+- Limited to numerical features only
+- Cannot detect non-linear relationships (except with Spearman)
+- Significance testing assumes certain distributional properties
+- Correlation does not imply causation
diff --git a/site/validmind/validmind/tests/stats/DescriptiveStats.qmd b/site/validmind/validmind/tests/stats/DescriptiveStats.qmd
new file mode 100644
index 0000000000..ae29e79f9d
--- /dev/null
+++ b/site/validmind/validmind/tests/stats/DescriptiveStats.qmd
@@ -0,0 +1,64 @@
+---
+title: "[validmind](/validmind/validmind.qmd).DescriptiveStats"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## DescriptiveStats
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'statistics', 'data_quality')
+
+@tasks('classification', 'regression', 'clustering')
+
+defDescriptiveStats(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,include_advanced:bool=True,confidence_level:float=0.95) → Dict\[str, Any\]:
+
+:::
+
+
+
+Provides comprehensive descriptive statistics for numerical features in a dataset.
+
+### Purpose
+
+This test generates detailed descriptive statistics for numerical features, including basic statistics, distribution measures, confidence intervals, and normality tests. It provides a comprehensive overview of data characteristics essential for understanding data quality and distribution properties.
+
+### Test Mechanism
+
+The test computes various statistical measures for each numerical column:
+
+- Basic statistics: count, mean, median, std, min, max, quartiles
+- Distribution measures: skewness, kurtosis, coefficient of variation
+- Confidence intervals for the mean
+- Normality tests (Shapiro-Wilk for small samples, Anderson-Darling for larger)
+- Missing value analysis
+
+### Signs of High Risk
+
+- High skewness or kurtosis indicating non-normal distributions
+- Large coefficients of variation suggesting high data variability
+- Significant results in normality tests when normality is expected
+- High percentage of missing values
+- Extreme outliers based on IQR analysis
+
+### Strengths
+
+- Comprehensive statistical analysis in a single test
+- Includes advanced statistical measures beyond basic descriptives
+- Provides confidence intervals for uncertainty quantification
+- Handles missing values appropriately
+- Suitable for both exploratory and confirmatory analysis
+
+### Limitations
+
+- Limited to numerical features only
+- Normality tests may not be meaningful for all data types
+- Large datasets may make some tests computationally expensive
+- Interpretation requires statistical knowledge
diff --git a/site/validmind/validmind/tests/stats/NormalityTests.qmd b/site/validmind/validmind/tests/stats/NormalityTests.qmd
new file mode 100644
index 0000000000..67d6d04e15
--- /dev/null
+++ b/site/validmind/validmind/tests/stats/NormalityTests.qmd
@@ -0,0 +1,57 @@
+---
+title: "[validmind](/validmind/validmind.qmd).NormalityTests"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## NormalityTests
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'statistics', 'normality')
+
+@tasks('classification', 'regression', 'clustering')
+
+defNormalityTests(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,alpha:float=0.05,tests:List\[str\]=\['shapiro', 'anderson', 'kstest'\]) → Dict\[str, Any\]:
+
+:::
+
+
+
+Performs multiple normality tests on numerical features to assess distribution normality.
+
+### Purpose
+
+This test evaluates whether numerical features follow a normal distribution using various statistical tests. Understanding distribution normality is crucial for selecting appropriate statistical methods and model assumptions.
+
+### Test Mechanism
+
+The test applies multiple normality tests:
+
+- Shapiro-Wilk test: Best for small to medium samples
+- Anderson-Darling test: More sensitive to deviations in tails
+- Kolmogorov-Smirnov test: General goodness-of-fit test
+
+### Signs of High Risk
+
+- Multiple normality tests failing consistently
+- Very low p-values indicating strong evidence against normality
+- Conflicting results between different normality tests
+
+### Strengths
+
+- Multiple statistical tests for robust assessment
+- Clear pass/fail indicators for each test
+- Suitable for different sample sizes
+
+### Limitations
+
+- Limited to numerical features only
+- Some tests sensitive to sample size
+- Perfect normality is rare in real data
diff --git a/site/validmind/validmind/tests/stats/OutlierDetection.qmd b/site/validmind/validmind/tests/stats/OutlierDetection.qmd
new file mode 100644
index 0000000000..b6c1167088
--- /dev/null
+++ b/site/validmind/validmind/tests/stats/OutlierDetection.qmd
@@ -0,0 +1,57 @@
+---
+title: "[validmind](/validmind/validmind.qmd).OutlierDetection"
+sidebar: validmind-reference
+toc-depth: 4
+toc-expand: 4
+# module.qmd.jinja2
+---
+
+
+
+## OutlierDetection
+
+
+
+::: {.signature}
+
+@tags('tabular_data', 'statistics', 'outliers')
+
+@tasks('classification', 'regression', 'clustering')
+
+defOutlierDetection(dataset:validmind.vm_models.VMDataset,columns:Optional\[List\[str\]\]=None,methods:List\[str\]=\['iqr', 'zscore', 'isolation_forest'\],iqr_threshold:float=1.5,zscore_threshold:float=3.0,contamination:float=0.1) → Dict\[str, Any\]:
+
+:::
+
+
+
+Detects outliers in numerical features using multiple statistical methods.
+
+### Purpose
+
+This test identifies outliers in numerical features using various statistical methods including IQR, Z-score, and Isolation Forest. It provides comprehensive outlier detection to help identify data quality issues and potential anomalies.
+
+### Test Mechanism
+
+The test applies multiple outlier detection methods:
+
+- IQR method: Values beyond Q1 - 1.5*IQR or Q3 + 1.5*IQR
+- Z-score method: Values with |z-score| > threshold
+- Isolation Forest: ML-based anomaly detection
+
+### Signs of High Risk
+
+- High percentage of outliers indicating data quality issues
+- Inconsistent outlier detection across methods
+- Extreme outliers that significantly deviate from normal patterns
+
+### Strengths
+
+- Multiple detection methods for robust outlier identification
+- Customizable thresholds for different sensitivity levels
+- Clear summary of outlier patterns across features
+
+### Limitations
+
+- Limited to numerical features only
+- Some methods assume normal distributions
+- Threshold selection can be subjective
diff --git a/site/validmind/validmind/version.qmd b/site/validmind/validmind/version.qmd
index b7271a80a6..d87cb2fbf7 100644
--- a/site/validmind/validmind/version.qmd
+++ b/site/validmind/validmind/version.qmd
@@ -9,6 +9,6 @@ sidebar: validmind-reference
::: {.signature}
-2.8.25
+2.10.0
:::
diff --git a/site/validmind/validmind/vm_models.qmd b/site/validmind/validmind/vm_models.qmd
index bc9fd1f727..39ef39ccf7 100644
--- a/site/validmind/validmind/vm_models.qmd
+++ b/site/validmind/validmind/vm_models.qmd
@@ -16,7 +16,7 @@ Models entrypoint
::: {.signature}
-R_MODEL_TYPES= \['LogisticRegression', 'LinearRegression', 'XGBClassifier', 'XGBRegressor'\]:
+R_MODEL_TYPES= ['LogisticRegression', 'LinearRegression', 'XGBClassifier', 'XGBRegressor']:
:::
@@ -150,7 +150,7 @@ Adds an extra column to the dataset without modifying the dataset `features` and
::: {.signature}
-defassign_predictions(self,model:validmind.vm_models.VMModel,prediction_column:Optional\[str\]=None,prediction_values:Optional\[List\[Any\]\]=None,probability_column:Optional\[str\]=None,probability_values:Optional\[List\[float\]\]=None,prediction_probabilities:Optional\[List\[float\]\]=None,\*\*kwargs:Dict\[str, Any\]):
+defassign_predictions(self,model:validmind.vm_models.VMModel,prediction_column:Optional\[str\]=None,prediction_values:Optional\[Any\]=None,probability_column:Optional\[str\]=None,probability_values:Optional\[Any\]=None,prediction_probabilities:Optional\[Any\]=None,\*\*kwargs:Dict\[str, Any\]):
:::
@@ -162,12 +162,41 @@ Assign predictions and probabilities to the dataset.
- `model (VMModel)`: The model used to generate the predictions.
- `prediction_column (Optional[str])`: The name of the column containing the predictions.
-- `prediction_values (Optional[List[Any]])`: The values of the predictions.
+- `prediction_values (Optional[Any])`: The values of the predictions. Can be array-like (list, numpy array, pandas Series, etc.).
- `probability_column (Optional[str])`: The name of the column containing the probabilities.
-- `probability_values (Optional[List[float]])`: The values of the probabilities.
-- `prediction_probabilities (Optional[List[float]])`: DEPRECATED: The values of the probabilities.
+- `probability_values (Optional[Any])`: The values of the probabilities. Can be array-like (list, numpy array, pandas Series, etc.).
+- `prediction_probabilities (Optional[Any])`: DEPRECATED: The values of the probabilities. Use probability_values instead.
- `**kwargs`: Additional keyword arguments that will get passed through to the model's `predict` method.
+### assign_scores
+
+
+
+::: {.signature}
+
+defassign_scores(self,metrics:Union\[str, List\[str\]\],model:Optional\[validmind.vm_models.VMModel\]=None,\*\*kwargs:Dict\[str, Any\]):
+
+:::
+
+
+
+Assign computed row metric scores to the dataset as new columns.
+
+This method computes row metrics for the given model and dataset, then adds the computed scores as new columns to the dataset using the naming convention: {model.input_id}\_{metric_name}
+
+**Arguments**
+
+- `model (Optional[VMModel])`: Optional model used to compute the scores. If provided and it has a valid `input_id`, that will be used as a prefix for column names. If not provided (or no `input_id`), columns will be created without a prefix.
+- `metrics (Union[str, List[str]])`: Single metric ID or list of metric IDs. Can be either:
+- Short name (e.g., "BrierScore", "LogLoss")
+- Full metric ID (e.g., "validmind.scorer.classification.BrierScore")
+- `**kwargs`: Additional parameters passed to the row metrics.
+
+**Raises**
+
+- `ValueError`: If metric computation fails.
+- `ImportError`: If scorer module cannot be imported.
+
### prediction_column
@@ -642,7 +671,7 @@ Test result.
::: {.signature}
-TestResult(result_id:str=None,name:str='Test Result',result_type:str=None,ref_id:str=None,title:Optional\[str\]=None,doc:Optional\[str\]=None,description:Optional\[Union\[str, validmind.vm_models.DescriptionFuture\]\]=None,metric:Optional\[Union\[int, float\]\]=None,tables:Optional\[List\[validmind.vm_models.ResultTable\]\]=None,raw_data:Optional\[validmind.vm_models.RawData\]=None,figures:Optional\[List\[Figure\]\]=None,passed:Optional\[bool\]=None,params:Optional\[Dict\[str, Any\]\]=None,inputs:Optional\[Dict\[str, Union\[List\[validmind.vm_models.VMInput\], validmind.vm_models.VMInput\]\]\]=None,metadata:Optional\[Dict\[str, Any\]\]=None,\_was_description_generated:bool=False,\_unsafe:bool=False,\_client_config_cache:Optional\[Any\]=None)
+TestResult(result_id:str=None,name:str='Test Result',result_type:str=None,ref_id:str=None,title:Optional\[str\]=None,doc:Optional\[str\]=None,description:Optional\[Union\[str, validmind.vm_models.DescriptionFuture\]\]=None,metric:Optional\[Union\[int, float\]\]=None,scorer:Optional\[List\[Union\[int, float\]\]\]=None,tables:Optional\[List\[validmind.vm_models.ResultTable\]\]=None,raw_data:Optional\[validmind.vm_models.RawData\]=None,figures:Optional\[List\[Figure\]\]=None,passed:Optional\[bool\]=None,params:Optional\[Dict\[str, Any\]\]=None,inputs:Optional\[Dict\[str, Union\[List\[validmind.vm_models.VMInput\], validmind.vm_models.VMInput\]\]\]=None,metadata:Optional\[Dict\[str, Any\]\]=None,\_was_description_generated:bool=False,\_unsafe:bool=False,\_client_config_cache:Optional\[Any\]=None,\_is_scorer_result:bool=False)
:::
@@ -690,7 +719,7 @@ Add a new table to the result.
**Arguments**
- `table (Union[ResultTable, pd.DataFrame, List[Dict[str, Any]]])`: The table to add.
-- `title (Optional[str])`: The title of the table (can optionally be provided for pd.DataFrame and List\[Dict\[str, Any\]\] tables).
+- `title (Optional[str])`: The title of the table (can optionally be provided for pd.DataFrame and List\[Dict[str, Any]\] tables).
### check_result_id_exist
@@ -793,6 +822,20 @@ Remove a table from the result by index.
Serialize the result for the API.
+### set_metric
+
+
+
+::: {.signature}
+
+defset_metric(self,values:Union\[int, float, List\[Union\[int, float\]\]\]):
+
+:::
+
+
+
+Set the metric value. Args: values: The metric values to set. Can be int, float, or List\[Union[int, float]\].
+
### to_widget
@@ -838,152 +881,3 @@ Validate the configuration options for logging a test result
Get the test name, using custom title if available.
-
-
-
-## TestSuite
-
-
-
-::: {.signature}
-
-@dataclass
-
-classTestSuite:
-
-:::
-
-
-
-Base class for test suites. Test suites are used to define a grouping of tests that can be run as a suite against datasets and models. Test Suites can be defined by inheriting from this base class and defining the list of tests as a class variable.
-
-Tests can be a flat list of strings or may be nested into sections by using a dict.
-
-### TestSuite
-
-
-
-::: {.signature}
-
-TestSuite(sections:List\[validmind.vm_models.TestSuiteSection\]=None)
-
-:::
-
-### get_default_config
-
-
-
-::: {.signature}
-
-defget_default_config(self) → dict:
-
-:::
-
-
-
-Returns the default configuration for the test suite.
-
-Each test in a test suite can accept parameters and those parameters can have default values. Both the parameters and their defaults are set in the test class and a config object can be passed to the test suite's run method to override the defaults. This function returns a dictionary containing the parameters and their default values for every test to allow users to view and set values.
-
-**Returns**
-
-- A dictionary of test names and their default parameters.
-
-### get_tests
-
-
-
-::: {.signature}
-
-defget_tests(self) → List\[str\]:
-
-:::
-
-
-
-Get all test suite test objects from all sections.
-
-### num_tests
-
-
-
-::: {.signature}
-
-defnum_tests(self) → int:
-
-:::
-
-
-
-Returns the total number of tests in the test suite.
-
-
-
-## TestSuiteRunner
-
-
-
-::: {.signature}
-
-classTestSuiteRunner:
-
-:::
-
-
-
-Runs a test suite.
-
-### TestSuiteRunner
-
-
-
-::: {.signature}
-
-TestSuiteRunner(suite:validmind.vm_models.TestSuite,config:dict=None,inputs:dict=None)
-
-:::
-
-### log_results
-
-
-
-::: {.signature}
-
-async deflog_results(self):
-
-:::
-
-
-
-Logs the results of the test suite to ValidMind.
-
-This method will be called after the test suite has been run and all results have been collected. This method will log the results to ValidMind.
-
-### run
-
-
-
-::: {.signature}
-
-defrun(self,send:bool=True,fail_fast:bool=False):
-
-:::
-
-
-
-Runs the test suite, renders the summary and sends the results to ValidMind.
-
-**Arguments**
-
-- `send (bool, optional)`: Whether to send the results to ValidMind. Defaults to True.
-- `fail_fast (bool, optional)`: Whether to stop running tests after the first failure. Defaults to False.
-
-### summarize
-
-
-
-::: {.signature}
-
-defsummarize(self,show_link:bool=True):
-
-:::