Les mathémtiques confèrent aux humains une capacité d'abstraction suffisamment complexe pour leur permettre de toucher les étoiles et les atomes, d'assembler la pensée pour mieux apprécier l'histoire et de prédire le futur, de toucher l'infini et de goûter à l'éternité. Les avancés des outils de calcul permettent de projeter des images de l'univers, bien au-delà de la Voie lactée. Appréhender le vivant par demeure néanmoins une tâche complexe.
En développant son jeu de la vie (game of life) en 1970, John Horton Connway a présenté un exemple percutant que des règles simples peuvent mener à des résultats innatendus. Le jeu consiste à placer des jetons sur les cases d'un plateau de jeu consistant en une simple grille othogonale. Le jeu évolue en fonction du nombre de jetons présents parmi les huit cases du voisinage des jetons ou des cases vides.
C'est tout. Selon la manière dont les jetons sont placés au départ, il se peut que la grille se vide de ses jetons, ou que les jetons y prennent beaucoup de place. Il arrive aussi que des cycles réguliers se dégagent ou que l'on se retrouve avec des formes régulières. Vous aurez peut-être compris à ce stade pourquoi le jeu est appelé "jeu de la vie". La première règle est une situation localisée de sous-population, condition dans laquelle la reproduction est difficile. La deuxième règle est une situation localisée statble. La troisième est une situation de surpopulation, où des individus meurent par un environnement rendu inadéquat par insuffisance de ressource ou surplus de toxicité. Enfin, la quatrième indique une situation favorable à la reproduction.
Une grille vidée correspond à une extinction et une grille remplie correspond à une explosion de population. Une oscillation est un "climax", un état stable en écologie. Un léger changement initial dans la disposition initiale des jetons peu mener à des solutions différentes.
Le jeu, qui en fait est une application de la technique des automates cellulaires, se complexifie à mesure que le nombre de jetons grandit. Un humain passera des heures à calculer une ittération à 50 jetons, commettra probablement quelques erreurs et demandera quelques cafés. Un processeur pourra gérer des centaines d'ittérations sur des grilles de centaines de jetons en quelques secondes.
En établissant des règles correspondant aux mécanismes de l'objet étudié, il devient possible de modéliser l'évolution des systèmes vivants, comme l'émergence d'espèces invasives.
L'écologie mathématique couvre un large spectre de domaines, mais peut être divisée en deux branches: l'écologie théorique et l'écologie quantitative (Legendre et legendre, 2012). Alors que l'écologie théorique s'intéresse à l'expression mathématique des mécanismes écologiques, l'écologie quantitative, plus empirique, en étudie principalement les phénomènes. La modélisation écologique vise à prévoir une situation selon des conditions données. Faisant partie à la fois de l'écologie théorique et de l'écologie quantitative, elle superpose souvent des mécanismes de l'écologie théorique et des phénomènes empiriques de l'écologie quantitative. L'écologie numérique comprend la branche descriptive de l'écologie quantitative, c'est-à-dire qu'elle s'intéresse à évaluer des effets à partir de données empiriques. L'exploration des données dans le but d'y découvrir des structures passe souvent par des techniques multivariées comme la classification hiérarchique ou la réduction d'axe (par exemple, l'analyse en composantes principales), qui sont davantage heuristiques (dans notre cas, bioheuristique) que statistiques. Les tests d'hypothèses et l'analyse des probabilités, quand à eut, relèvent de la biostatistique.
Le génie écologique, une dicipline intimement liée à l'écologie mathématique, est vouée à l'analyse, la modélisation, la conception et la construction de systèmes vivants dans le but de résoudre de manière efficace des problèmes liés à l'écologie et une panoplie de domaines qui lui sont raccordés. L'agriculture est l'un de ces domaines. C'est d'emblée la discipline qui sera prisée dans ce manuel. Néanmoins, les principes qui seront discutés sont transférable à l'écologie générale comme à la foresterie.
Ce manuel est distribué librement (license MIT) créé dans un environnement intéractif de type carnet de notes (Jupyter lab, nteract). Ce format permet aussi de travailler avec le langage de programmation Python, qui sera ici l'outil privilégié pour le calcul scientifique.
Le cours vise à introduire des étudiants gradués en agronomie, biologie, écologie, sols, génie agroenvironnemental, génie civil et génie écologique à l'analyse et la modélisation dans leur domaine, tant pour les appuyer pour leurs travaux de recherche que pour leur fournir une trousse d'outil émancipatrice pour leur cheminement professionnel. Plus spécifiquement, vous serez accompagné à découvrir différents outils numériques qui vous permettront d'appréhender vos données, d'en faire émerger l'information et de construire des modèles. En ce sens, c'est un cours de pilotage, pas un cours de mécanique.
Bien que des connaissances en programmation et en statistiques aideront grandement les étudiant⦁e⦁s à appréhender ce document, une littéracie informatique n'est pas requise. Dans tous les cas, quiconque voudra tirer profit de ce manuel devra faire preuve d'autonomie. Vous serez guidés vers des ressources et des références, mais je vous suggère vivement de développer votre propre bibliothèque adaptée à vos besoins et à votre manière de comprendre.
Tous les outils numériques qui sont proposés dans ce cours sont des logiciels libres:
« Logiciel libre » [free software] désigne des logiciels qui respectent la liberté des utilisateurs. En gros, cela veut dire que les utilisateurs ont la liberté d'exécuter, copier, distribuer, étudier, modifier et améliorer ces logiciels. Ainsi, « logiciel libre » fait référence à la liberté, pas au prix1 (pour comprendre ce concept, vous devez penser à « liberté d'expression », pas à « entrée libre »). - Projet GNU
Donc: codes sources ouverts, développement souvent communautaire, gratuité. Plusieurs raisons éthiques, principalement liées au contrôle de l'environnement virtuel par les utilisateurs et les communautés, peuvent justifier l'utilisation de logiciels libres. Plusieurs raisons pratiques justifient aussi cette orientation. Les logiciels libres vous permettent de transporter vos outils avec vous, d'une entreprise à l'autre, au bureau, ou à la maison, et ce, sans vous soucier d'acheter de coûteuses licences.
On soulève avec justesse les risques liés aux possibles erreurs dans les codes des logiciels communautaires. Pour les scientifiques, une erreur peu mener à une étude retirée de la littérature et même, potentiellement, des politiques publiques mal avisées. Pour les ingénieurs, les conséquences pourraient être dramatiques. Comme professionnel.le, vous êtes responsable des outils que vous utilisez: vous devez vous assurer de la bonne qualité d'un logiciel, qu'il soit propriétaire ou communautaire. Alors que la qualité des logiciels propriétaires est généralement suivie par audits, celle des logiciels libres est plutôt soumise à la vigilance communautaire. Chaque approche a ses avantages et inconvénients, mais elles ne sont pas exclusives. Ainsi les logiciels libres peuvent être audités à l'externe par quiconque décide de le faire. Différentes entreprises, souvent concurantes, participent tant à cette vigilance qu'au développement des logiciels libres: elles en sont même souvent les instigatrices.
Ce cours est basé sur le langage Python. En plus d'être libre, Python est un langage de programmation dynamique et générique apprécié pour sa polyvalence et sa simplicité. Son développement est supporté par la Python Software Foundation. Python est utilisé autant pour créer des logiciels ou des sites web que pour le calcul scientifique. Ainsi, Python peut être utilisé en interopérabilité avec une panoplie de logiciels libres, comme QGIS pour la cartorgaphie et FreeCAD pour le dessin technique. Mais par dessus tout, une fois implémenté avec des modules de calcul scientifique (que nous couvrirons au long du cours), Python devient un outil de calcul convivial, rapide et fiable pour le calcul écologique.
Des comparaisons peuvent inévitablement être dressées avec des langages offrant des possibilités similaires. En particulier, R est un langage de programmation orienté pour le calcul statistique. Davantage que Python à ce jour, R comprend une quantité impressionnante de modules destinés à toutes sortes d'applications scientifiques. Il est prisé en biologie, en écologie et en agronomie pour sa simplicité et la grande qualité de ses modules. Sa popularité reste moindre pour effectuer des calculs numériques liés à l'ingénierie ou pour déployer des algorithmes sous forme de logiciel.
Bien que leurs possibilités se superposent largement, ce serait une erreur d'aborder R et Python comme des langages rivaux. Les deux sont similaire et s'inspirent mutuellement: apprendre à travailler avec l'un vient à apprendre l'autre. Par ailleurs, les spécialistes en calcul scientifique tendent à apprendre à travailler avec plus d'un langage de programmation.
Parce qu'on est en 2017.
D'autres languages realtivement similaires à Python, comme Julia, Scala et Ruby, sont aussi utilisés en calcul scientifique. Ils sont néanmoins moins garnis et moins documentés que Python. Des languages de plus bas niveau, comme Fortran et C++, viennent souvent appuyer les fonctions des autres langages: ces langages sont plus ardus à utiliser au jour le jour, mais leur rapidité de calcul est imbatable.
[Sven Erik Jørgensen](http://scitechconnect.elsevier.com/in-memoriam-of-dr-sven-erik-jorgensen/)
matplotlib
, à peine survolée dans ce manuel pour éviter les maux de tête. L'appropriation de matplotlib
peut être difficile, mais l'approche de Jake Vanderplas est douce et efficace. Le livre est disponible gratuitement ici.Les ouvrages de référence reconnus vous offrent des bases solides sur lesquelles vous pouvez vous appuyer dans vos travaux. Mais au delà des principes, au jour le jour, vous vous butterez inmanquablement à toutes sortes de petits problèmes. Quel module utiliser pour cette tâche précise? Que veut dire ce message d'erreur? Comment interpréter ce résultat? Pour tous les petits accorcs du quotidien en calcul scientifique, internet offre de nombreuses ressources qui sont très hétérogènes en qualité. Vous aprendrez à reconnaître les ressources fiables à celles qui sont douteuses. Les plate formes basées sur Stack Exchange, comme Stack Overflow et Cross Validated, m'ont souvent été d'une aide précieuse. Vous aurez avantage à vous contruire une petite banque d'information (Framanotes, Evernote, Google keep) en collectant des liens, en prenant en notes certaines recettes et en suivant des sites d'intérêt avec des flux RSS.
Je m'appelle Serge-Étienne Parent. Je suis ingénieur écologue et professeur adjoint au Département des sols et de génie agroalimentaire de l'Université Laval, Québec, Canada. Je crois que la science est le meilleur moyen d'appréhender le monde pour prendre des décisions avisées, particulièrement en écologie, une science maltraitée de toute part.
Ce cours a été développé pour ouvrir des perspectives mathématiques en écologie et en agronomie à la FSAA de l'Université Laval. Il est complémentaire à certains cours offerts dans d'autres institutions académiques au Québec, dont ceux-ci.
Je suis ouvert au commentaires et suggestions. Pour contribuer directement, dirigez-vous sur le dépôt du manuel sur GitHub, puis ouvrez une Issue pour en discuter. Créez une nouvelle branche (fork), effectuez les modification, puis lancer une requête de fusion (pull resquest).