You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

483 lines
26 KiB

==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (24 septembre 2017):
* At the beginning of SELECT_CashCrop(x, PRA, data), associating the following lists to list comprehensions :
* x.edibleCompanionCrops = [c for c in x.edibleCrops if prodTYP(crop)=='Companion crop']
* x.edibleCoverCrops = [c for c in x.edibleCrops if prodTYP(crop) == 'Companion crop' or prodTYP(crop) == 'Cover crop']
* x.edibleCashCrops = [c for c in x.edibleCrops if prodTYP(crop) != 'Companion crop' and prodTYP(crop) != 'Cover crop']
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (12 septembre 2017):
* input.ods : l'ID des PRA ne correspondait pas à l'ID réel !!! Il semblerait que les données du programmes
ne soient pas impactées par cette erreur. Les tableurs sont corrigés.
* corrections apportées dans ASSESS_SeedingDate
* corrections apportée à ASSESS_Nutrients_CompanionCrop --> continuait d'examiner la période de croissance alors
que les nutriments étaient déjà jugés insuffisants !
* correction de x.edibleCrops_init : tel qu'il était écrit, l'orchardgrass était forcément sélectionée si la culture
avait un type différent de 1 (arbre) ou 2 (buisson) !
* correction à la dernière ligne de sauvegarde (dietary_results): bog si la culture n'était (naturellement !) pas
dans WeeklyResources parce que CC.--> référence = headers_ID, pas crop.
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (11 septembre 2017):
* Correction d'un bug --> CN(month) --> CN(crop)
* Correction de la fonction de PnD: si l'index maximum est inférieur à 40%, tout l'ensemble de la
liste n'est pas supprimé (sinon, x.edibeCrops = []): il reste le maximum.
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (8 septembre 2017):
* line 792 : if round(WRmargin_GSmin(crop, month, x, PRA), 2) > 0
instead of if round(WRmargin_GSmin(crop, month, x, PRA), 2) >= 0:
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (7 septembre 2017):
* First step : the "maximum_growing_season_duration" is not GSmax(crop) but :
GSmax(crop) + abs(seed_from(crop) - seed_to(crop))
It makes sure that the climatic features meet the crops ones even if it has been planted on the latest
date and has long growing season.
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (3 septembre 2017):
* Functions_step1, ligne 431 : x.edible_Tmin = [] ---> commenté
--> VÉRIFIER S'IL N'Y A AUCUNE INCIDENCE ! x.edible_Tmin n'est pas sensé être modifié dans cette fonction...
* ASSESS_WaterResources avait disparue... j'ai repris la version de la micro SD (dernière modif du 31 août)
* Functions_step2 --> l.1758 : x.decomposition_month[monthInGS][nutrient] = 0
Il manquait le [nutrient]
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (31 août 2017):
* mineralizedN : temporary workaround --> mineralizedCPK(crop, month) * CN(crop)
-----> Nmin = Cmin / (C/N)
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (18 juillet 2017):
* csv table layout (dietary_results : for a better out-programm management)
* ignored fruit crops fixed
* corrected edibility assessment function for fruit trees (minimum temperature for whole year)
* Two entries were lacking in the 'nutrition' database (CABwhite, and CABbokchoi had another ID)
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (7 juillet 2017):
* CropRepartitionTEST.csv --> export plus lisible des données de répartition avec:
- la PRA
- le nombre de cultures éligibles
- un "1" dans la colonne de chaque culture éligible
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (5 juillet 2017):
* Rectification de x.indexPnD --> une division par 12 de trop, le CABkale avait toujours un PnD de 0 --> rendement nul !
---> suppression des cultures pour lesquelles le risque de pests and diseases mènerait à une réduction du rendement
de plus de 70%.
ATTENTION !!! Vérifier qu'au moment du calcul,
* Erreur dans l'exportation des résultats : le tableau de carto écrasait les résultats !
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (28 mai 2017):
* "Renommage": * PriorityAssessement ---> ASSESS_Priority
* nouvelle variables : x.edibleCrops_init pour garder la sélection de x.edibleCrops sans cultures permanentes ni rhubarbe
TO DO : * incohérences x.indexWR -> différents indexes pour OLVgreen et OLVmature... pas normal.
+ Les indexes sont souvent très bas, à vérifier. (remis en standardisés en attendant)
* des oignons partout !!! comment favoriser la diversité encore davantage ?...
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (27 mai 2017):
* x.LimitingFactor[PRA] contains now all nutrients that are not sufficient to grow an potentially edible crop.
* ASSESS_NutrientsMargin a été simplifiée un brin.
* améliorations et erreurs rectifiées dans SELECT_CashCrop
* erreur corrigée dans la sauvegarde de 'first_results.py'
* erreur corrigée dans "MDL_QTTperPerson"
* indexWR faussait l'ajustement du rendement : le calcul de l'index ne prenait pas en compte ETc et en plus
il était standardisé après !!
* UPDATE_VERIFprodBOT_end_PestsDiseases_in_rotation a été corrigée ! La fonction ne pouvait jamais trouver le
x.SelectedCrop dans ses clés !
* ASSESS_Water_ComanionCrop has been drastically simplified by deleting all further index calculation -->
using x.indexWR if needed for the selection.
TO DO :
* faire en sorte que s'il y a une culture permanente dans les edibleCrops qui ne soit pas utilisée dans le pays ou
la région, elle soit choisie en début de rotation SI N > 120.
---> trop de berries !!! il y en a dans 181 PRA / 714 !!
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (26 mai 2017):
* "Renommage": * ASSESS_PRArotation ---> MDL_Rotation
* PRAedibilityTest ---------> MDL_EdibilityTest
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (25 mai 2017):
* "Renommage": * ASSESS_PRArotation ---> MDL_PRArotation
* PRAedibility ---------> MDL_PRAedibility
* ASSESS_QTTperPerson --> MDL_QTTperPerson
* ASSESS_FoodNutrients -> SUPPRIME et intégré à MDL_QTTperPerson.
à terme, "Functions_step3.py" sera supprimé et MDL_QTTperPerson sera
intégré à VegAu.py
* CCedibility ----------> CCwater (il contient juste les indices des CC pour l'eau)
* x.totalYields_year ---> x.totalYields
* bug du x.totalYields réglé !
==================================================================================================================================================LAST UPDATES (14 mai 2017):
LAST UPDATES (16 mai 2017):
* ASSESS_WaterResources a été simplifiée: la moitié de la fonction ne servait à rien ! Plusieur dicts aussi du
coup, il est possible qu'il en traine encore quelque part...
* Les erreurs de calcul des indices NutrientsMargin ont été corrigées ! Maintenant, il est bien entre 0 et 1 !
* Organisation du module "selfVariables" en classant les différentes variables pour aider à l'écriture du
dossier
==================================================================================================================================================LAST UPDATES (14 mai 2017):
* Ajout de la prise en compte de la répartition à l'échelle nationale dans SELECT_SelectedCrop
--> nouvel index généré juste avant la sélection de la culture + nouveau dict 'unusedCrops_countryScale'
* modification de l'ajout d'entrées à x.rotat : pour permettre la prise en compte de la dernière culture
sélectionnée, celle ci est ajoutée avec la date de récolte la plus éloignée (pour éviter de la rajouter à la
fin du script). Ce tuple est modifié avec la bonne date de récolte à la sélection de la culture suivante.
==================================================================================================================================================
LAST UPDATES (13 mai 2017):
* x.DelayIndex était parfois nettement négatif : j'avais oublié de %12 x.EndPreviousCrop_later...
* dans ASSESS_SeedingDate, delay2 n'était pas utilisé (corrigé !)
*
==================================================================================================================================================
LAST UPDATES (12 mai 2017): VegAu ANNIVERSARY !!!! -----> VegAu 0.1 !
* VegAu tourne ! Les dernières corrections nécessaires à son fonctionnement pour toutes les PRA ont été apportées.
* ajout d'une variable results et d'une sauvegarde à la fin de la fonction ASSESS_PRArotation.
==================================================================================================================================================
LAST UPDATES (10 mai 2017):
* ASSESS_Water (step1) a été modifiée pour exclure TOLERflood et éventuellement permettre davantage de "edibleCrops"
à la sélection du step1.
* AVO (ID de l'avocat) devient 'EXOTavoc' pour permettre la prise en compte de cultures exotiques et d'en faire le tri.
/!\ ERREUR ALÉATOIRE SUR LA MOUTARDE BRUNE D'ÉTÉ LORE DU CALCUL D'INDICE DES NUTRIMENTS ---> block try pour l'intercepter
en attendant de comprendre d'où ça vient...
==================================================================================================================================================
LAST UPDATES (8 mai 2017):
* Un block try...except avec AssertionError et traceback a été créé dans VegAu.py
Si je parviens à bien utiliser la boucle while, il pourra être supprimé.
* L'erreur de decomposition_month (les dernières entrées étaient remplacées par 0) a été trouvée et résolue.
* Fonction ASSESS_Water_CompanionCrop_for_SelectedCrop a été renommée en ASSESS_Water_CompanionCrop
Idem pour ASSESS_Nutrients_CompanionCrop --> ASSESS_Nutrients_CompanionCrop
* découverte des assertions... Certaines fonctionnent comme je voulais et d'autres pas, je ne comprend pas encore très bien.
---------------------------------------------------------------
* OBSERVATIONS :
- des valeurs de nutriments rendus au sol sont négative... Il faudrait observer ces fonctions de plus près.
- les fonctions de minéralisation ne sont pas au point. Le N consommé par les légumineux pour leur dégradation
est bien trop élevé... Et la minéralisation de matière organique n'est à priori pas sensée en consommer.
À creuser...
==================================================================================================================================================
LAST UPDATES (7 mai 2017):
* Les fonctions ont été renommées pour les différencier en 3 types :
- ASSESS_ : on recherche et on met la liste x.edibleCrops à jour selon les conditions environnementales
- SELECT_ : on utilise les résultats des fonctions ASSESS_ pour déterminer les meilleures possibilités
- APPLY_ : on applique la sélection des fonctions SELECT_ aux paramètres environementaux du sol (décomposition
et nutriments retirés)
- UPDATE_ : on applique la sélection des fonctions SELECT_ aux paramètres temporels (GSstart,
EndPreviousCrop...) et analytiques (VERIFprodBOT)
* RotatMonth a été supprimé et remplacé par GSstart
* La fonction d'évaluation de la qualité des WaterResources pour un éventuel CC a été corrigée (gros cambouis)
* La fonction d'évaluation de l'impact des CC éligibles sur les nutriments ont été corrigées. Elles agissaient
notamment sur x.ActualStand et faisaient directement passer la PRA en déficit de nutriments sans qu'il n'y ait
eu de sélection !!
==================================================================================================================================================
LAST UPDATES (6 mai 2017):
* Correction de ASSESS_NutrientsMargin : on parlait de x.SelectedCC alors qu'on n'avait même pas encore choisi x.SelectedCrop !
* La fonction update_RotatMonth_and_VERIFprodBOT a été renommée en update_VERIFprodBOT: RotatMonth correspond toujours à GSstart, c'est
à dire à l'implantation de chaque nouvelle culture.
* RotatMonth a été "stabilisé" à la fin d'un loop, il est égal à x.EndPreviousCrop_earlier. Il est éventuellement
mis à jour dans FindOptimalSeedingDate.
/!\ de grosses confusions entre GSstart et RotatMonth + EndPreviousCrop_earlier et later PAS AU POINT !!! Faire un
schéma complet du modèle avacnt de continuer.
==================================================================================================================================================
LAST UPDATES (5 mai 2017):
* le Carbone Organique a été remis en g/kg en utilisant un rapport de proportionnalité entre les données
originelles de l'INRA et celles qui avaient été calculées (les données manquantes avaient déjà été calculées...
ça évitait de refaire le calcul)
* remplacement de la fonction lambda AWC_SoilOnly(PRA) par une "vraie" fonction qui calcule l'Available Water
Capacity si elle n'est pas dans la DB (utile pour plus tard, quand les gens importeront leurs données)
* création de la fonction OM_retention_capacity(x, PRA): ATTENTION, elle peut être largement simplifiée à l'aide
d'un dict, je m'en suis rendue compte à la fin... ---> À FAIRE
* modification de la fonction WaterResources pour tenir compte de la Feldkapazität (Available Water Capacity) et
du niveau de matière organique dans le sol
* les valeurs simulée dans la feuille 'ENVIRONMENT' de input.ods ont été arrondies à 2 décimales pour faciliter/accélérer
les calculs et alléger les dicts.
+ il manquait un type de sol (pour la PRA '01195')
==================================================================================================================================================
LAST UPDATES (3 mai 2017):
* Premiers résultats pour la sélection des cultures selon les données environementales:
* correction du compte des 'True' consécutifs pour Tmin et edible_WaterRqt
* différenciation des arbres fruitiers et des cultures normales pour le calcul des 'True' consécutifs
==================================================================================================================================================
LAST UPDATES (2 mai 2017):
* Correction de la fonction ASSESS_Water pour les cultures permanentes: x.edible_Tmin n'existe pas pour eux !
C'est la liste de la culture précédente qui était prise en compte...
* Correction du compte de "True" consécutifs pour voir si ça correspond à GSmin dans les fonctions ASSESS_Water,
ASSESS_Tmin_germ et ASSESS_Tmin.
* Correction de la première ligne de ASSESS_Tmin_germ qui ne prenait pas les buissons à baies en compte !!
* Les docstrings ont été précisées pour faciliter leur compréhension (précision des inputs, outputs et de la
fonction de la fonction)
==================================================================================================================================================
LAST UPDATES (27 avril 2017):
* la liste 'x.edible' a été supprimée et remplacée par un Boléen qui devient Faux si la culture n'est pas jugée
éligible au cours des fonctions de test de concordance entre paramètres environementaux et physiologiques.
==================================================================================================================================================
LAST UPDATES (26 avril 2017):
* input.ods ne contient plus de case vide pour les variables et cultures utilisés dans le script.
* inputFR a été mis à jour
==================================================================================================================================================
LAST UPDATES (23 avril 2017):
* VegAu tourne jusqu'à la fonction ASSESS_PRArotation(x, data), mais AUCUN 'EDIBLE CROP' pour AUCUNE PRA !!!
--> trouver d'où vient le soucis
--> déboggage de la suite impossible tant qu'il n'y a aucune culture sélectionnée
==================================================================================================================================================
LAST UPDATES (22 avril 2017):
* la classe 'i' a été renommée 'data' pour éviter les erreurs avec les trop nombreuses variables 'i' qui
écraseraient la classe
* Addition de paramètres manquants, qui différaient entre la définition et l'appel.p
==================================================================================================================================================
LAST UPDATES (21 avril 2017):
* class 'self' renamed as 'x' to avoid errors
==================================================================================================================================================
LAST UPDATES (20 avril 2017):
* input a été réimporté: input.ods et le script d'import ont été corrigé (l'import n'était pas complet)
==================================================================================================================================================
LAST UPDATES (24 mars 2017):
* Les données de Canada Santé ont été importées proprement sous la forme d'un dictionnaire unique 'CanadaHealth'
(dans 'CanadaHealth.py') qui permet d'appeler les variables désirées sous la forme suivante:
Canada_Health[ élément nutritif ][ genre ][ classe d'âge ]
------------------------------------------------------------------------------------------------------------
EXEMPLE:
* élément nutritif:'Vitamine E (BME, mg/jour)'
---> toujours préciser le nom de l'élément et le type d'index nutritionnel à prendre en compte.
L'unité n'est pas toujours disponible.
* genre : Nourissons, Enfants, Hommes, Femmes
* classe d'âge (exemple pour les adultes) : * '51-70 ans'
* '> 70 ans'
* '31-50 ans'
* '9-13 ans'
* '19-30 ans'
* '14-18 ans'
------------------------------------------------------------------------------------------------------------
* 'step1', 'step2', 'step3', 'VegAu' et 'selfVariables' été fusionnés dans VegAu2 pour éviter les soucis d'import.
Les fichiers séparés ont été copiés dans le dossier 'step1, 2, 3 et VegAu séparés'
==================================================================================================================================================
LAST UPDATES (23 mars 2017):
* recopiage des tableaux de Canada Santé: reste à les convertir proprement en dict et à fusionner le contenu des
différents tableaux de macronutriments et "d'éléments".
* problème de variable importée non reconnu résolu pour 'environment' mais lambda de 'ImportedVariables' non
reconnue non-plus...
==================================================================================================================================================
LAST UPDATES (22 mars 2017):
* debugging général
* OBSERVATION : la fonction "Functions_step1.py" n'est plus utilisée nul part
Elle prend en compte l'espace de temps entre seed_from et seed_to. Je ne sais plus pourquoi je ne l'utilise plus,
mais il est vrai que GSmax est plus sûr/juste à priori.
* correction des fonctions WRmargin_GSmax(month) et WRmargin_GSmin(month)
* on faisait une boucle while pour déterminer une variable i "déterminable" par une simple équation...
* pas de valeur pour WaterRessources > 90% ETc_GSmax(month)
---> le résultat était toujours égal à 1 !! --> (ETc_effective - TOLERdrought(crop))/(ETc_GSmax(month) - TOLERdrought(crop))
==================================================================================================================================================
LAST UPDATES (21 mars 2017):
* élimination totale des globales
* toutes les variables self.X sont dans le fichier 'selfVariables.py', pour l'instant pas très bien rangées...
leur utilisation n'a pas toujours été vérifiée
==================================================================================================================================================
LAST UPDATES (20 mars 2017):
* Suppression totale de l'interaction avec LibreOffice pendant le script
---> code entièrement revisité avec des dictionnaires, notamment ceux importés lors de l'import du module importingODS.
---> code VÉRIFIÉ : il ne reste normalement plus de trace d'une interaction avec LibreOffice...
* 'importingODS.py' a été vérifié et optimisé ('importingODS_simplifié.py') ---> UNE SEULE FONCTION qui s'occupe de TOUS LES DICOS
ATTENTION : 'importingODS.py' a été vérifié mais pas 'importingODS_simplifié.py' (bug du pont uno...)
* à présent, SEUL 'importingODS.py' FAIT APPEL À PYOO !!!
IMPORTANT : une ligne avec subprocess a été ajoutée pour ouvrir l'instance de LibreOffice automatiquement.
* 'exporting_in_ODS.py' a été créé : imports commentés (si pas d'erreur, à virer)
* Fonctions de calcul des marges de minéraux DRASTIQUEMENT SIMPLIFIÉES
-----> une sous-fonction (pour ASSESS_Nutrients_CompanionCrop_for_SelectedCrop)
voir PLUS DU TOUT (pour ASSESS_self.NutrientsMargin) à la place de neuf sous-fonctions (un pour chaque minéral) !
==================================================================================================================================================
LAST UPDATES (19 mars 2017):
* les IDs des types de sols allemands ont été mis à jours dans ENVIRONMENT
* des titres complets ont été ajoutés à 'ENVIRONMENT' avant l'import en .py
* 'PLANTS', 'ENVIRONMENT', 'NUTRITION', PRAvirgin' ET 'NUTRITIONvirgin' ont été importés en fichier python (input.py)
* les lambdas qui donnaient les valeurs du tableur ont été adaptées pour renvoyer celles des dico (normalement c'est pareil)
* ajout, dans les fonctions de VegAu, de lignes permettant l'ajout des indices de priorité et d'adaptation à 'plants'
* de façon générale, le code a été simplifié avec suppression des valeurs globales superflues
* ajout de delete_module.py pour me faciliter la tâche pour les tests --> permet de "dé-importer" un module grâce à:
delete_module('module')
==================================================================================================================================================
LAST UPDATES (18 mars 2017):
* script adapté pour être agréable à la lecture
* script corrigé :
* fonctions fausses (Nutrient Margin Assessement for CC)
* fonctions manquantes (SelectedCC_Kill)
* script d'importation du fichier ODS a été écrit puis corrigé:
* les dico environment et plants ont en clé:
* "headers" pour les titres
* les ID des cultures (pour 'plants') et PRA (pour 'environment')
* des clés spéciales pour leurs indices dans le tableur:
* PRA_index pour la ligne de la PRA dans ENVIRONMENT
* CROP_index pour la ligne de la culture dans PLANTS (= CROProw)
* colIndex_PRAedibility pour CROPcol
* colIndex_PRAyields pour CROPcol_yields
==================================================================================================================================================
LAST UPDATES (17 mars 2017):
* 'ENVIRONMENT' dans 'input.ods' a été complété et formaté
ATTENTION, il reste des trous !!! ponctuels, mais il en reste !
* création des cartes comparatives pour voir la répartition et part des valeurs manquantes à l'échelle de la France (voir l'impact du script en fait)
--> données de sol, pas encore de cartes pour le climat