"""
test_drop&filter_BqM7.py — Stress Test: rimozione della Marca B e dei prodotti con qualità inferiore a 7 dal catalogo

Come funziona:
  1. import_dataset()                           : carica il catalogo completo
  2. Crea un'istanza della sottoclasse "QualityStressTest" con il parametro del filtro qualità
  3. Chiama il metodo sim_QualityStressTest()   : per ottenere dataset con le probabilità aggiorante
  4. Crea un'istanza della sottoclasse "MarcaDropStressTest" con il parametro della marca da droppare
  5. Chiama il metodo sim_MarcaDropStressTest() : sul nuovo dataset per ottenere le probabilità aggiorante
  6. plot_choice_probabilities()                : visualizza il confronto
  7. Salva CSV con prodotti rimasti, probabilità medie, probabilità per segmento

Output:
  - prodotti_noB_M7.csv       : DataFrame prodotti dopo il drop
  - prob_prodotti_noB_M7.csv  : vettore probabilità medie
  - prob_segmenti_noB_M7.csv  : matrice probabilità per segmento
"""
import sys
import os
cartella_progetto = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
if cartella_progetto not in sys.path:
    sys.path.append(cartella_progetto)
from models import *
from plot_segment_test import *
from prepare_data import import_dataset

prodotti_tab=import_dataset() 

Alta_Qualità = QualityStressTest(prodotti_tab, quality_level=7)
Alta_Qualità_probabilities= Alta_Qualità.sim_QualityStressTest(MNLChoiceModel, LatentChoiceModel)

test_noB = MarcaDropStressTest(Alta_Qualità_probabilities[0], marca_drop=['B'])
res_noB = test_noB.sim_MarcaDropStressTest(MNLChoiceModel, LatentChoiceModel)

plot_choice_probabilities(res_noB,test_label= "Drop Marca B e solo prodotti Qualità>7 ",segment_names= ["Loyal A","Loyal B","Loyal C","Loyal D", "Price", "Quality"])

# Esportazione caratteristiche prodotti rimasti
res_noB[0].to_csv(r'test_res\prodotti_noB_M7.csv', index=False)
# Esportazione probabilità prodotti
res_noB[1].to_csv(r'test_res\prob_prodotti_noB_M7.csv', header=False, index=False)
# Esportazione probabilità segmenti
res_noB[2].to_csv(r'test_res\prob_segmenti_noB_M7.csv', header=False, index=False)

