Questo tutorial ti guiderà attraverso tecniche avanzate per analizzare e ottimizzare i profili di sapore utilizzando le capacità di test del gusto di TomatoPy.
Requisiti
Prima di iniziare, assicurati di avere:
Comprensione di base di Python
TomatoPy installato
Comprensione dei concetti di base del gusto
Esperienza con l'analisi di base dei sapori
Passo 1: Impostare l'ambiente di test del gusto
Per prima cosa, inizializziamo il nostro ambiente di test del gusto:
from tomatopy import TasteTester, TasteProfile# Inizializza il tester del gustotester =TasteTester()# Configura l'ambiente di testtester.configure( temperature=22, # Celsius humidity=0.65, lighting="standard", background_noise="minimal")
Passo 2: Analisi di base dei sapori
Iniziamo con un'analisi completa dei sapori:
# Crea un ingrediente di test
from tomatopy import Tomato
test_tomato = Tomato(
ripeness=0.9,
variety="San Marzano",
weight=150 # grammi
)
# Esegui un'analisi completa
profile = tester.analyze(
test_tomato,
depth="comprehensive",
include_aroma=True,
include_texture=True
)
# Accedi alle metriche di base
print(f"Dolcezza: {profile.sweetness}")
print(f"Acidità: {profile.acidity}")
print(f"Umami: {profile.umami}")
Passo 3: Analisi avanzata degli aromi
Immergiamoci profondamente nella profilazione degli aromi:
# Ottieni il profilo aromatico dettagliato
aroma_profile = tester.analyze_aroma(
test_tomato,
include_secondary_notes=True,
include_tertiary_notes=True
)
# Accedi alle metriche aromatiche
print("Note Primarie:")
for note in aroma_profile.primary_notes:
print(f"- {note.name}: {note.intensity}")
print("\nNote Secondarie:")
for note in aroma_profile.secondary_notes:
print(f"- {note.name}: {note.intensity}")
print("\nNote Terziarie:")
for note in aroma_profile.tertiary_notes:
print(f"- {note.name}: {note.intensity}")
Passo 4: Analisi della consistenza
Analizziamo il profilo della consistenza:
# Ottieni il profilo della consistenza dettagliato
texture_profile = tester.analyze_texture(
test_tomato,
include_mouthfeel=True,
include_structural_analysis=True
)
# Accedi alle metriche della consistenza
print(f"Fermità: {texture_profile.firmness}")
print(f"Succosità: {texture_profile.juiciness}")
print(f"Sensazione in bocca: {texture_profile.mouthfeel}")
print(f"Integrità strutturale: {texture_profile.structural_integrity}")
Passo 5: Analisi dell'equilibrio dei sapori
Analizziamo l'equilibrio dei sapori:
# Analizza l'equilibrio dei sapori
balance = tester.analyze_balance(test_tomato)
# Accedi alle metriche di equilibrio
print(f"Equilibrio complessivo: {balance.overall_score}")
print(f"Rapporto dolce-acido: {balance.sweet_sour_ratio}")
print(f"Miglioramento umami: {balance.umami_enhancement}")
print(f"Complessità del sapore: {balance.complexity}")
Passo 6: Analisi comparativa
Confrontiamo più ingredienti:
# Crea più ingredienti di test
tomato1 = Tomato(ripeness=0.8, variety="San Marzano")
tomato2 = Tomato(ripeness=0.9, variety="Roma")
tomato3 = Tomato(ripeness=0.7, variety="Cherry")
# Esegui un'analisi comparativa
comparison = tester.compare(
[tomato1, tomato2, tomato3],
metrics=["sweetness", "acidity", "umami", "aroma"]
)
# Accedi ai risultati del confronto
print("\nConfronto della dolcezza:")
for tomato, score in comparison.get_rankings("sweetness"):
print(f"- {tomato.variety}: {score}")
print("\nConfronto dell'acidità:")
for tomato, score in comparison.get_rankings("acidity"):
print(f"- {tomato.variety}: {score}")
Passo 7: Ottimizzazione del sapore
Ottimizziamo il profilo del sapore:
# Crea un profilo target
target_profile = TasteProfile(
sweetness=0.7,
acidity=0.6,
umami=0.8,
aroma_intensity=0.75
)
# Analizza il profilo attuale
current_profile = tester.analyze(test_tomato)
# Ottieni raccomandazioni per l'ottimizzazione
recommendations = tester.get_optimization_recommendations(
current_profile,
target_profile
)
# Stampa le raccomandazioni
print("\nRaccomandazioni per l'ottimizzazione:")
for rec in recommendations:
print(f"- {rec}")
Passo 8: Visualizzazione avanzata
Creiamo visualizzazioni dettagliate dei nostri profili di sapore:
# Crea una visualizzazione di base
viz = tester.visualize_profile(profile)
# Personalizza la visualizzazione
viz.set_color_scheme("tomato")
viz.set_scale("logarithmic")
viz.set_style("radar")
# Aggiungi metriche aggiuntive
viz.add_metrics(["aroma", "texture"])
# Mostra la visualizzazione
viz.show()
Tecniche Avanzate
Analisi Multi-Dimensionale
# Esegui analisi multidimensionale
analisi = tester.analyze_multi_dimensional(
test_tomato,
dimensions=[
"gusto",
"aroma",
"texture",
"sensazione in bocca",
"retrogusto"
]
)
# Accedi ai risultati multidimensionali
print("\nAnalisi Multidimensionale:")
for dimension, metrics in analisi.items():
print(f"\n{dimension.upper()}:")
for metric, value in metrics.items():
print(f"- {metric}: {value}")
Analisi Basata sul Tempo
# Analyze flavor development over time
# Esegui analisi statistica
stats = tester.analyze_statistics(
[tomato1, tomato2, tomato3],
metrics=["dolcezza", "acidità", "umami"]
)
# Accedi ai risultati statistici
print("\nAnalisi Statistica:")
print(f"Media dolcezza: {stats.mean('sweetness')}")
# Ensure consistent sample preparation
if not tester.validate_sample(test_tomato):
print("Warning: Sample may not be suitable for analysis")
Comprehensive Analysis
# Use comprehensive analysis for detailed results
profile = tester.analyze(
ingredient,
depth="comprehensive",
include_all_metrics=True
)
Data Validation
# Validate analysis results
if profile.is_valid():
# Proceed with analysis
print(profile.get_summary())
else:
print("Warning: Analysis may be incomplete")