Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
5 changes: 5 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@ def _compute_headers():
# --- GPU Acceleration for Clustering (Optional, requires NVIDIA GPU and RAPIDS cuML) ---
USE_GPU_CLUSTERING = os.environ.get("USE_GPU_CLUSTERING", "False").lower() == "true"

# --- Clustering Cleanup Behavior ---
# When True (default), existing '_automatic' playlists are deleted before new clusters are created.
# Set to False to preserve old automatic playlists when running clustering.
CLUSTERING_CLEANING = os.environ.get("CLUSTERING_CLEANING", "True").lower() == "true"

# --- DBSCAN Only Constants (Ranges for Evolutionary Approach) ---
# Default ranges for DBSCAN parameters
DBSCAN_EPS_MIN = float(os.getenv("DBSCAN_EPS_MIN", "0.1"))
Expand Down
7 changes: 5 additions & 2 deletions tasks/clustering.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from psycopg2.extras import DictCursor

# Import configuration
from config import MAX_SONGS_PER_CLUSTER, MOOD_LABELS, STRATIFIED_GENRES, MUTATION_KMEANS_COORD_FRACTION, MUTATION_INT_ABS_DELTA, MUTATION_FLOAT_ABS_DELTA, TOP_N_ELITES, EXPLOITATION_START_FRACTION, EXPLOITATION_PROBABILITY_CONFIG, SAMPLING_PERCENTAGE_CHANGE_PER_RUN, ITERATIONS_PER_BATCH_JOB, MAX_CONCURRENT_BATCH_JOBS, MIN_PLAYLIST_SIZE_FOR_TOP_N, CLUSTERING_BATCH_TIMEOUT_MINUTES, CLUSTERING_MAX_FAILED_BATCHES
from config import MAX_SONGS_PER_CLUSTER, MOOD_LABELS, STRATIFIED_GENRES, MUTATION_KMEANS_COORD_FRACTION, MUTATION_INT_ABS_DELTA, MUTATION_FLOAT_ABS_DELTA, TOP_N_ELITES, EXPLOITATION_START_FRACTION, EXPLOITATION_PROBABILITY_CONFIG, SAMPLING_PERCENTAGE_CHANGE_PER_RUN, ITERATIONS_PER_BATCH_JOB, MAX_CONCURRENT_BATCH_JOBS, MIN_PLAYLIST_SIZE_FOR_TOP_N, CLUSTERING_BATCH_TIMEOUT_MINUTES, CLUSTERING_MAX_FAILED_BATCHES, CLUSTERING_CLEANING

from error import error_manager
from error.error_dictionary import ERR_CLUSTERING_FAILED
Expand Down Expand Up @@ -545,7 +545,10 @@ def _log_and_update(message, progress, details_to_add_or_update=None, task_state
)

_log_and_update("Deleting existing automatic playlists...", 97)
delete_automatic_playlists()
if CLUSTERING_CLEANING:
delete_automatic_playlists()
else:
_log_and_update("CLUSTERING_CLEANING is disabled — skipping deletion of existing automatic playlists.", 97)
Comment thread
NeptuneHub marked this conversation as resolved.

# *** ABSOLUTE FINAL SHUFFLE: Guarantee random order right before database storage ***
logger.info("=== ABSOLUTE FINAL SHUFFLE: Randomizing all playlists before database storage ===")
Expand Down
Loading