|
import json |
|
|
|
|
|
thresholds = { |
|
'solid': { |
|
'calories': 250, |
|
'sugar': 3, |
|
'salt': 625 |
|
}, |
|
'liquid': { |
|
'calories': 70, |
|
'sugar': 2, |
|
'salt': 175 |
|
} |
|
} |
|
|
|
|
|
def calculate_percentage_difference(value, threshold): |
|
if threshold is None: |
|
return None |
|
return ((value - threshold) / threshold) * 100 |
|
|
|
|
|
def analyze_nutrients(product_type, calories, sugar, salt, serving_size): |
|
threshold_data = thresholds.get(product_type) |
|
if not threshold_data: |
|
raise ValueError(f"Invalid product type: {product_type}") |
|
|
|
scaled_calories = (calories / serving_size) * 100 if calories is not None else None |
|
scaled_sugar = (sugar / serving_size) * 100 if sugar is not None else None |
|
scaled_salt = (salt / serving_size) * 100 if salt is not None else None |
|
|
|
nutrient_analysis = {} |
|
nutrient_analysis_str = "" |
|
|
|
if scaled_calories is not None: |
|
nutrient_analysis.update({'calories': { |
|
'value': scaled_calories, |
|
'threshold': threshold_data['calories'], |
|
'difference': scaled_calories - threshold_data['calories'], |
|
'percentageDiff': calculate_percentage_difference(scaled_calories, threshold_data['calories']) |
|
}}) |
|
if nutrient_analysis['calories']['percentageDiff'] > 0: |
|
nutrient_analysis_str += f"Calories exceed the ICMR-defined threshold by {nutrient_analysis['calories']['percentageDiff']}%." |
|
|
|
if scaled_sugar is not None: |
|
nutrient_analysis.update({'sugar': { |
|
'value': scaled_sugar, |
|
'threshold': threshold_data['sugar'], |
|
'difference': scaled_sugar - threshold_data['sugar'], |
|
'percentageDiff': calculate_percentage_difference(scaled_sugar, threshold_data['sugar']) |
|
}}) |
|
if nutrient_analysis['sugar']['percentageDiff'] > 0: |
|
nutrient_analysis_str += f" Sugar exceeds the ICMR-defined threshold by {nutrient_analysis['sugar']['percentageDiff']}%." |
|
|
|
if scaled_salt is not None: |
|
nutrient_analysis.update({'salt': { |
|
'value': scaled_salt, |
|
'threshold': threshold_data['salt'], |
|
'difference': scaled_salt - threshold_data['salt'], |
|
'percentageDiff': calculate_percentage_difference(scaled_salt, threshold_data['salt']) |
|
}}) |
|
if nutrient_analysis['salt']['percentageDiff'] > 0: |
|
nutrient_analysis_str += f" Salt exceeds the ICMR-defined threshold by {nutrient_analysis['salt']['percentageDiff']}%." |
|
|
|
return nutrient_analysis_str |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|