Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Main Update #27

Merged
merged 18 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
TEST_MODE=false
STABILITY=dev
TEST_MODE=False
DEV_MODE=True

#DB Config
sqlHost=""
sqlPort=
sqlPassword=""
sqlSchema=""
#Database Config
DB_HOST=
DB_PORT=
DB_PW=
DB_SCHEMA=

#User Config
APP_SECRET=
VERIFICATION_SECRET=
6 changes: 3 additions & 3 deletions app/database/job_db.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
Datenbank-Komponente für Jobs
"""
from sqlalchemy import Column, String, Integer, DateTime, Enum, Text
from sqlalchemy import Column, String, Integer, DateTime, Enum, JSON
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import declarative_base, sessionmaker

Expand All @@ -18,12 +18,12 @@ class DBJob(Base):
__tablename__ = "jobs"

id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, nullable=False)
user_id = Column(String(255), nullable=False)
created_at = Column(DateTime, nullable=False)
job_name = Column(String(255), nullable=True)
status = Column(Enum(JobStatus), nullable=False)
job_parameters = Column(String(5000), nullable=False)
json_values = Column(Text, nullable=True)
json_values = Column(JSON, nullable=True)


engine = get_async_engine()
Expand Down
29 changes: 0 additions & 29 deletions app/models/basic_kmeans_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,32 +93,3 @@ class KMeansResult3D(BasicKMeansResult):
"""
z_label: str
cluster: List[Cluster3D]


class KMeansResultND(BaseModel):
"""
Model representing the result of the KMeans clustering process in n dimensions.

Attributes:
- user_id (int): User ID.
- request_id (int): Request ID.
- clusters (List[Cluster]): List of resulting clusters.
- x_label (str): Label for the X-coordinate.
- y_label (str): Label for the Y-coordinate.
- iterations (int): Number of iterations the algorithm ran.
- used_distance_metric (str): The distance metric used for clustering.
- filename (str): Name of the file containing the data points.
- k_value (int): Number of clusters used.
- important_features (Dict[str, float]): Dictionary of:
important features with their contributions.
"""
user_id: int
request_id: int
clusters: List[Cluster]
x_label: str
y_label: str
iterations: int
used_distance_metric: str
name: str
k_value: int
important_features: Dict[str, float]
6 changes: 2 additions & 4 deletions app/models/job_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class JobResponse(BaseModel):
Modell für Rückgabe aus Job-Endpunkt
"""
job_id: int
user_id: int
user_id: str
job_name: str
created_at: str
status: JobStatus
Expand All @@ -36,6 +36,7 @@ class JobResponseFull(JobResponse):
"""
json_values: str


# pylint: disable=too-few-public-methods
class UserJob:
"""
Expand All @@ -53,16 +54,13 @@ class Type(Enum):
def __init__(self, jobtype, parameters):
"""
Konstruktur
:param jobtype:
:param parameters:
"""
self.jobtype = jobtype
self.parameters = parameters

def to_json(self):
"""
Klasse als JSON
:return:
"""
return dumps(self, default=lambda o: o.__dict__,
sort_keys=False, indent=None)
Expand Down
6 changes: 4 additions & 2 deletions app/routers/advanced_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ async def advanced_kmeans(
kmeans_type: str = Query("OptimizedKMeans",
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
normalize: bool = True
):
"""
Endpoint for KMeans clustering with automatic k determination.
Expand All @@ -49,7 +50,8 @@ async def advanced_kmeans(
kmeans_type,
user_id,
request_id,
selected_columns=[column1, column2]
selected_columns=[column1, column2],
normalize= normalize
)
# Return the KMeansResult object.
return kmeans_result
Expand Down
6 changes: 4 additions & 2 deletions app/routers/advanced_n_d_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ async def advanced_kmeans_nd(
kmeans_type: str = Query("OptimizedKMeans",
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
use_3d_model:bool = False
):
"""
Endpoint for advanced N-D KMeans clustering
Expand All @@ -44,7 +45,8 @@ async def advanced_kmeans_nd(
distance_metric=distance_metric,
kmeans_type=kmeans_type,
user_id=user_id,
request_id=request_id
request_id=request_id,
use_3d_model=use_3d_model
)
# Return the KMeansResultND object.
return advanced_kmeans_result_nd
Expand Down
12 changes: 7 additions & 5 deletions app/routers/advanced_three_d_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,20 @@
# pylint: disable=duplicate-code
async def advanced_kmeans_3d(
file: UploadFile = File(...),
column1: int = Query(0, alias="Column 1",
column1: int = Query(0,
description="Index of the first column"),
column2: int = Query(1, alias="Column 2",
column2: int = Query(1,
description="Index of the second column"),
column3: int = Query(2, alias="Column 3",
column3: int = Query(2,
description="Index of the third column"),
distance_metric: str = Query(
"EUCLIDEAN",
description="/".join(BaseOptimizedKMeans.supported_distance_metrics.keys())),
kmeans_type: str = Query("OptimizedKMeans",
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
normalize: bool = True
):
"""
Endpoint for advanced 3D KMeans clustering with automatic k determination.
Expand All @@ -53,7 +54,8 @@ async def advanced_kmeans_3d(
kmeans_type=kmeans_type,
user_id=user_id,
request_id=request_id,
selected_columns=[column1, column2, column3]
selected_columns=[column1, column2, column3],
normalize=normalize
)
# Return the KMeansResult3D object.
return kmeans_result_3d
Expand Down
8 changes: 5 additions & 3 deletions app/routers/basic_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ async def kmeans(
description="/".join(BaseOptimizedKMeans.supported_distance_metrics.keys())),
kmeans_type: str = Query("OptimizedKMeans",
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
k_clusters: int = Query(2, alias="kCluster", description="Number of clusters"),
k_clusters: int = Query(2, description="Number of clusters"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
normalize: bool = True
):
"""
Endpoint for KMeans clustering.
Expand All @@ -53,7 +54,8 @@ async def kmeans(
kmeans_type=kmeans_type,
user_id=user_id,
request_id=request_id,
selected_columns=[column1, column2]
selected_columns=[column1, column2],
normalize=normalize
)
# Return the KMeansResult object.
return kmeans_result
Expand Down
6 changes: 4 additions & 2 deletions app/routers/basic_n_d_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ async def kmeans_nd(
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
k_clusters: int = Query(2, description="Number of clusters"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
use_3d_model:bool=False
):
"""
Endpoint for N-D KMeans clustering with dimensionality reduction to 2D.
Expand All @@ -45,7 +46,8 @@ async def kmeans_nd(
distance_metric=distance_metric,
kmeans_type=kmeans_type,
user_id=user_id,
request_id=request_id
request_id=request_id,
use_3d_model=use_3d_model
)
# Return the KMeansResultND object.
return kmeans_result_nd
Expand Down
6 changes: 4 additions & 2 deletions app/routers/basic_three_d_kmeans_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ async def kmeans_3d(
description="OptimizedKMeans/OptimizedMiniBatchKMeans"),
k_clusters: int = Query(2, description="Number of clusters"),
user_id: int = Query(0, description="User ID"),
request_id: int = Query(0, description="Request ID")
request_id: int = Query(0, description="Request ID"),
normalize: bool = Query(True, description="Normalize the data before clustering")
):
"""
Endpoint for 3D KMeans clustering.
Expand All @@ -54,7 +55,8 @@ async def kmeans_3d(
kmeans_type=kmeans_type,
user_id=user_id,
request_id=request_id,
selected_columns=[column1, column2, column3]
selected_columns=[column1, column2, column3],
normalize=normalize
)
# Return the KMeansResult3D object.
return kmeans_result_3d
Expand Down
Loading