Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -693,42 +693,6 @@ def nutri_call():
|
|
693 |
|
694 |
|
695 |
from tabulate import tabulate
|
696 |
-
|
697 |
-
# Глобальные параметры
|
698 |
-
TOTAL_NITROGEN = 120.0 # Общее количество азота
|
699 |
-
NO3_RATIO = 8.0 # Соотношение NO3:NH4
|
700 |
-
NH4_RATIO = 1.00 # Соотношение NH4:NO3
|
701 |
-
VOLUME_LITERS = 100 # Объем раствора
|
702 |
-
|
703 |
-
BASE_PROFILE = {
|
704 |
-
"P": 50, # Фосфор
|
705 |
-
"K": 210, # Калий
|
706 |
-
"Mg": 120, # Магний (высокий уровень)
|
707 |
-
"Ca": 150, # Кальций
|
708 |
-
"S": 50, # Сера
|
709 |
-
"N (NO3-)": 0, # Рассчитывается автоматически
|
710 |
-
"N (NH4+)": 0 # Рассчитывается автоматически
|
711 |
-
}
|
712 |
-
|
713 |
-
NUTRIENT_CONTENT_IN_FERTILIZERS = {
|
714 |
-
"Кальциевая селитра": {"N (NO3-)": 0.11863, "Ca": 0.16972},
|
715 |
-
"Калий азотнокислый": {"N (NO3-)": 0.136, "K": 0.382},
|
716 |
-
"Калий сернокислый": {"K": 0.44874, "S": 0.18401},
|
717 |
-
"Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
|
718 |
-
"Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
|
719 |
-
"Монофосфат калия": {"P": 0.218, "K": 0.275},
|
720 |
-
"Сульфат кальция": {"Ca": 0.23, "S": 0.186},
|
721 |
-
"Кольцевая селитра": {"N (NO3-)": 0.15, "Ca": 0.20} # Новое удобрение
|
722 |
-
}
|
723 |
-
|
724 |
-
EC_COEFFICIENTS = {
|
725 |
-
'P': 0.0012, 'K': 0.0018, 'Mg': 0.0015,
|
726 |
-
'Ca': 0.0016, 'S': 0.0014,
|
727 |
-
'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
|
728 |
-
}
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
# Список всех питательных веществ
|
733 |
nutrients_stencil = [
|
734 |
'N (NO3-)', 'N (NH4+)', 'P', 'K', 'Mg', 'Ca', 'S',
|
@@ -863,6 +827,17 @@ class NutrientCalculator:
|
|
863 |
# Целевой профиль как объект Composition
|
864 |
self.target_composition = Composition('Target Profile', list(self.target_profile.values()))
|
865 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
866 |
def calculate(self):
|
867 |
try:
|
868 |
self.actual_profile = {k: 0.0 for k in self.target_profile}
|
@@ -985,15 +960,48 @@ class NutrientCalculator:
|
|
985 |
print(f"Ошибка при выводе отчёта: {str(e)}")
|
986 |
raise
|
987 |
|
988 |
-
if __name__ == "__main__":
|
989 |
-
try:
|
990 |
-
calculator = NutrientCalculator(volume_liters=VOLUME_LITERS)
|
991 |
-
calculator.calculate()
|
992 |
-
calculator.print_report() # Правильный вызов метода класса
|
993 |
-
except Exception as e:
|
994 |
-
print(f"Критическая ошибка: {str(e)}")
|
995 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
996 |
|
|
|
|
|
|
|
|
|
|
|
997 |
|
998 |
|
999 |
|
|
|
693 |
|
694 |
|
695 |
from tabulate import tabulate
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
696 |
# Список всех питательных веществ
|
697 |
nutrients_stencil = [
|
698 |
'N (NO3-)', 'N (NH4+)', 'P', 'K', 'Mg', 'Ca', 'S',
|
|
|
827 |
# Целевой профиль как объект Composition
|
828 |
self.target_composition = Composition('Target Profile', list(self.target_profile.values()))
|
829 |
|
830 |
+
def _copy_results(self):
|
831 |
+
"""Создаёт глубокую копию результатов"""
|
832 |
+
return {
|
833 |
+
fert_name: {
|
834 |
+
'граммы': data['граммы'],
|
835 |
+
'миллиграммы': data['миллиграммы'],
|
836 |
+
'вклад в EC': data['вклад в EC']
|
837 |
+
}
|
838 |
+
for fert_name, data in self.results.items()
|
839 |
+
}
|
840 |
+
|
841 |
def calculate(self):
|
842 |
try:
|
843 |
self.actual_profile = {k: 0.0 for k in self.target_profile}
|
|
|
960 |
print(f"Ошибка при выводе отчёта: {str(e)}")
|
961 |
raise
|
962 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
963 |
|
964 |
+
# Пример данных
|
965 |
+
BASE_PROFILE = {
|
966 |
+
'N (NO3-)': 106.7,
|
967 |
+
'N (NH4+)': 13.3,
|
968 |
+
'P': 50,
|
969 |
+
'K': 210,
|
970 |
+
'Mg': 120,
|
971 |
+
'Ca': 150,
|
972 |
+
'S': 50
|
973 |
+
}
|
974 |
+
|
975 |
+
NUTRIENT_CONTENT_IN_FERTILIZERS = {
|
976 |
+
'Кальциевая селитра': {
|
977 |
+
'N (NO3-)': 13.0,
|
978 |
+
'Ca': 17.0
|
979 |
+
},
|
980 |
+
'Калий сернокислый': {
|
981 |
+
'K': 44.0,
|
982 |
+
'S': 18.0
|
983 |
+
},
|
984 |
+
'Магний сернокислый': {
|
985 |
+
'Mg': 9.8,
|
986 |
+
'S': 13.0
|
987 |
+
}
|
988 |
+
}
|
989 |
+
|
990 |
+
TOTAL_NITROGEN = 120.0
|
991 |
+
NO3_RATIO = 90.0
|
992 |
+
NH4_RATIO = 10.0
|
993 |
+
|
994 |
+
# Создание калькулятора
|
995 |
+
calculator = NutrientCalculator(volume_liters=100)
|
996 |
+
|
997 |
+
# Расчет
|
998 |
+
solution = calculator.calculate()
|
999 |
|
1000 |
+
# Генерация отчета
|
1001 |
+
if solution:
|
1002 |
+
print(calculator.generate_report())
|
1003 |
+
else:
|
1004 |
+
print("Решение не найдено.")
|
1005 |
|
1006 |
|
1007 |
|