FoodProductQualityAnalysis / nutrient_analyzer.py
shivanis14's picture
Update nutrient_analyzer.py
388893c verified
import json
# Nutrient thresholds for solids and liquids
thresholds = {
'solid': {
'calories': 250,
'sugar': 3,
'salt': 625
},
'liquid': {
'calories': 70,
'sugar': 2,
'salt': 175
}
}
# Function to calculate percentage difference from threshold
def calculate_percentage_difference(value, threshold):
if threshold is None:
return None # For nutrients without a threshold
return ((value - threshold) / threshold) * 100
# Function to analyze nutrients and calculate differences
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']}%."
else:
nutrient_analysis_str += f"Calories are {nutrient_analysis['calories']['percentageDiff']}% below the ICMR-defined threshold."
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']}%."
else:
nutrient_analysis_str += f"Sugar is {nutrient_analysis['sugar']['percentageDiff']}% below the ICMR-defined threshold."
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']}%."
else:
nutrient_analysis_str += f"Salt is {nutrient_analysis['salt']['percentageDiff']}% below the ICMR-defined threshold."
return nutrient_analysis_str
# Example of how these functions can be called in the main code
#if __name__ == "__main__":
# product_type = 'solid' # 'solid' or 'liquid'
# calories = 300
# sugar = 4
# salt = 700
# serving_size = 100
# added_fat = 5 # Optional
# result = analyze_nutrients(product_type, calories, sugar, salt, serving_size, added_fat)
# print(result)