Core framework
NutMEG is arranged into three subpackages:
NutMEG.corecontains the building-block objects for creating a wide variety of computational scenarios. They are designed to be as simple and flexible as possible, and can be extended for specific applications and presets.NutMEG.modelscontains classes that for models used byNutMEG.coreobjects. For example, aBaseOrganismrequires a growth_model describing its growth behaviour. Classes that can faciliate that are found in theNutMEG.models.organism.growth_modelssubpackage, likeMonod, orBioenergeticGrowthModel. They can also be user-defined.NutMEG.presetsprovides builders for a specific type of organism or environment. For example,Enceladus[1] creates an Enceladus-like chemical environment, andTypicalOptimalMethanogencreates methanogenic organism population as defined in ref [2].
The basics of NutMEG.core
NutMEG.core.ecosystem
Most presets and applications interface with an Ecosystem. It contains the local chemical environment which is summarised by a Reactor object, and any number of Resident objects that can interact with that environment through time.
The NutMEG.core.reactor submodule
Reactorobjects monitor the physicochemical system, such as it’s composition, size, temperature, and pressure. Under default settings,Reactoris valid for well-mixed near-equilibrium or kinetically quiescent conditions where the composition does not appreciably change unless we introduce something to disrupt the system such as anOrganismPopulation. Simple environmental disequilibria can be introduced, such as a constant fresh supply of aReagentor simple modelled chemicalReaction.Reagentobjects store and updates properties of chemical species such as thermodynamic parameters, activities, molar quantities. Thermodynamic data at a range of temperatures and pressures can be calculated from chemical databases.Reactionobjects model chemical reactions by interacting withReagents. Both biotic and abiotic chemical interactions with theReactorare possible.
The NutMEG.core.base_organism submodule
This submodule is for building model organisms which act as the foundation for the behaviour of an OrganismPopulation.
BaseOrganismobjects hold contextual cell-specific information about the model organism, such as its mass, energy requirements for biomass building.Metaboliserobjects handle the kinetics and energetics of the net metabolism. Each organism has one Metaboliser:BaseOrganism.metabolism. Metabolisers can handle any number of rate-limiting mechansims for the eventual metabolic rate.Maintainerobjects handle mirobial maintenance processes (specifically, the energetic cost of them). This can be compared against the energy yield from the Metabolisers to assess habitability and the energy available for biomass growth. Each organism has one Maintainer:BaseOrganism.maintenance.Growerobjects handle the growth behavior of the organism, and can interface with the Metaboliser. Each organism has one Grower:BaseOrganism.growth. Growers can also handle any number of rate-limiting mechansims specific to growth.
The NutMEG.core.resident submodule
This submodule is for dynamic inhabitants of an ecosystem. Usually these will be organisms, but any evolving phase that interacts with the reactor (e.g., a dissolving solid phase) is possible.
OrganismPopulationobjects represent a population of a specific microbial strain whose constituents act like a commonBaseOrganism. A seperateOrganismPopulationis needed for each different model organism present (e.g., for different metabolisms, growth behaviours etc)
—