MRC-CSO-SPHSU / UKSEABMLib.jl

MIT License
1 stars 1 forks source link

Regular summery reports #54

Open AtiyahElsheikh opened 1 year ago

AtiyahElsheikh commented 1 year ago

Summary Report I (11th Jan. 2023)

AtiyahElsheikh commented 1 year ago

Summary Report II (13. March 2023)

This report corresponds to the new releases

Package Release
SocioEconmics.jl milestone V0.4
LPM.jl V0.4 (14th Mar.)
MultiAgents.jl (V0.5 5th Mar.)
MiniDemographABM.jl (V1.0 End Feb.)

I. Integration of Agents.jl-extended space type

Agents.jl is the most popular Julia library used within the Julia community with an extensive well-written documentation . Its integration allows employing so many ready-to-use code s.a. results collections and visualisation among others.

In order to integrate Agents.jl, the space concept of Agents.jl has to be adopted. This has been accomplished as follows:

cf. issue #52 for further technical details

II. MiniDemographicABM.jl package

In order to learn how to integrate Agents.jl concepts into SEs library, a toy model MiniDemographicABM.j has been established to explore Agents.jl utilisation and facilities.

Future potentials and further details can be consulted from the library issues

III. Fixing significant set of bugs (initial population level)

Many of the functionalities in the SocioEconomics library are not sufficiently tested for correctness. Consequently, constructed models were expected to have inconsistencies and semantics errors (i.e. errors that are not raised and hence not detected at runtime).

Issue #39 recommends a method to improve the quality of the library and hence the constructed models. This is done by challenging constructed populations and verify their consistency, for example kinship relationship and housing consistency. For example, if person x is the father of person y, then y has to be the child of person x.

This method has been now started in this release and a significant set of bugs have been identified. It has been found that:

All of the above bugs have been corrected, cf. #59. Some consistency checks did not result in any errors, cf. #39.

Therefore, it makes sense to further apply this method for verifying the consistency of the population as the simulation advances. This is hopefully to be accomplished in milestone V0.5)

IV. Blue style coding convention

There have been difficulities in previous version of understanding the code, what an identifier refers to and from where it comes from etc. In order to reduce such difficulities, the code has been transformed / renamed to follow coding guidelines that are widely approved by the Julia community.

At the top of the ReadMe in the library website, a blue-grey badge can be noticed. This is to refer that the library is now (largely) following blue-style coding conventions. These conventions prescribe the coding guidelines that need to be obeyed to improve code clarity and readability, not only by others but also by the developer who conducted the code. These conventions are invented from a large community and it is useful to stick to these conventions , e.g.

V. Model-based function operation

As a result of starting constructing a model based on Agents.jl library, i.e. enabling many ways to construct and simulate the same or a similar model, it is further recognised that so many functions that are applied on model , i.e.foo(model) are splintered around the code. It is desired to collect such functions in one place to enhance code reuse within the library and make them accessible to the client. A new moduleAPI.ModelOphas been started and to be enhanced along next releases. More details, cf. #50 (Milestone V0.6)

VI. Enabling very large-scale simulations

It is now possible to simulate models with large initial population size , 100,000 (ca. 3 minutes ) - 1,000,000 (ca. 5 hours) cf. Performance Table. Potentials for further up-scaling of memory and runtime performance exist, cf. #31