youssef
fixed part 3 backend
b6710f4
from pydantic import BaseModel, Field
from typing import List, Tuple, Dict, Optional
class GradualInput(BaseModel):
"""
Input model for the Weighted h-Categorizer API.
Attributes
----------
A : List[str]
List of argument names.
R : List[Tuple[str, str]]
List of attack relations between arguments.
n_samples : int
Number of random weight samples to generate (default: 1000).
max_iter : int
Maximum number of iterations for convergence (default: 1000).
Example
-------
# Example JSON body for POST /gradual/compute
{
"A": ["A", "B", "C"],
"R": [["A", "B"], ["B", "C"]],
"n_samples": 500,
"max_iter": 1000
}
"""
num_args: int = Field(..., ge=1, le=10,
description="Number of arguments (|A|)")
R: List[Tuple[str, str]
] = Field(..., description="Attack relations (A->B format)")
n_samples: int = Field(
1000, ge=10, description="Number of samples for convex hull computation")
axes: Optional[List[str]] = Field(
None, description="Chosen arguments for 3D plot axes (X,Y,Z)")
controlled_args: Optional[Dict[str, float]] = Field(
None, description="Values for non-axis arguments")
class GradualOutput(BaseModel):
"""
Output model for the Weighted h-Categorizer API.
Attributes
----------
num_args : int
Number of arguments in the framework.
hull_volume : Optional[float]
Volume of the Convex Hull (None if |A| <= 1).
hull_area : Optional[float]
Surface area of the Convex Hull (None if |A| <= 1).
hull_points : List[List[float]]
Coordinates of the Convex Hull vertices.
samples : List[List[float]]
Sampled points (h-Categorizer outputs) used to compute the hull.
Example
-------
# Example response JSON from POST /gradual/compute
{
"num_args": 3,
"hull_volume": 0.018,
"hull_area": 0.143,
"hull_points": [
[0.83, 0.12, 0.45],
[0.10, 0.54, 0.92],
[0.44, 0.80, 0.33]
],
"samples": [
[0.2, 0.3, 0.7],
[0.6, 0.4, 0.2],
...
]
}
"""
num_args: int
hull_volume: Optional[float]
hull_area: Optional[float]
hull_points: List[List[float]]
samples: List[List[float]]
axes: Optional[List[str]] = None