"""
test_drop&filter_Dqm6.py — Stress Test: rimozione dei prodotti con prezzi inferiore a 2 euro dal catalogo

Come funziona:
  1. import_dataset()                           : carica il catalogo completo
  2. Crea un'istanza della sottoclasse "PriceStressTest" con il parametro del filtro prezzo "price_level=2"
  3. Chiama il metodo sim_PriceStressTest()   : per ottenere dataset con le probabilità aggiorante
  4. plot_choice_probabilities()                : visualizza il confronto
  5. Salva CSV con prodotti rimasti, probabilità medie, probabilità per segmento

Output:
  - prodotti_p_M2.csv       : DataFrame prodotti dopo il drop
  - prob_prodotti_p_M2.csv  : vettore probabilità medie
  - prob_segmenti_p_M2.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() 

sim_p = PriceStressTest(prodotti_tab, price_level=2, greater=True)
r_p= sim_p.sim_PriceStressTest(MNLChoiceModel, LatentChoiceModel)

plot_choice_probabilities(r_p,test_label= "Prodotti Costosi",segment_names= ["Loyal A","Loyal B","Loyal C","Loyal D", "Price", "Quality"])

# Esportazione caratteristiche prodotti rimasti
r_p[0].to_csv(r'test_res\prodotti_p_M2.csv', index=False)
# Esportazione probabilità prodotti
r_p[1].to_csv(r'test_res\prob_prodotti_p_M2.csv', header=False, index=False)
# Esportazione probabilità segmenti
r_p[2].to_csv(r'test_res\prob_segmenti_p_M2.csv', header=False, index=False)

