diff --git a/paper/paper.bib b/paper/paper.bib index 4de9067..b32bccf 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -1,83 +1,47 @@ - -@article{Pearson:2017, - Adsnote = {Provided by the SAO/NASA Astrophysics Data System}, - Adsurl = {http://adsabs.harvard.edu/abs/2017arXiv170304627P}, - Archiveprefix = {arXiv}, - Author = {{Pearson}, S. and {Price-Whelan}, A.~M. and {Johnston}, K.~V.}, - Eprint = {1703.04627}, - Journal = {ArXiv e-prints}, - Keywords = {Astrophysics - Astrophysics of Galaxies}, - Month = mar, - Title = {{Gaps in Globular Cluster Streams: Pal 5 and the Galactic Bar}}, - Year = 2017} - -@book{Binney:2008, - Adsnote = {Provided by the SAO/NASA Astrophysics Data System}, - Adsurl = {http://adsabs.harvard.edu/abs/2008gady.book.....B}, - Author = {{Binney}, J. and {Tremaine}, S.}, - Booktitle = {Galactic Dynamics: Second Edition, by James Binney and Scott Tremaine.~ISBN 978-0-691-13026-2 (HB).~Published by Princeton University Press, Princeton, NJ USA, 2008.}, - Publisher = {Princeton University Press}, - Title = {{Galactic Dynamics: Second Edition}}, - Year = 2008} - -@article{zenodo, - Abstractnote = {
Gala is a Python package for Galactic astronomy and gravitational dynamics. The bulk of the package centers around implementations of gravitational potentials, numerical integration, and nonlinear dynamics.
}, - Author = {Adrian Price-Whelan and Brigitta Sipocz and Syrtis Major and Semyeong Oh}, - Date-Modified = {2017-08-13 14:14:18 +0000}, - Doi = {10.5281/zenodo.833339}, - Month = {Jul}, - Publisher = {Zenodo}, - Title = {adrn/gala: v0.2.1}, - Year = {2017}, - Bdsk-Url-1 = {http://dx.doi.org/10.5281/zenodo.833339}} - -@ARTICLE{gaia, - author = {{Gaia Collaboration} and {Prusti}, T. and {de Bruijne}, J.~H.~J. and - {Brown}, A.~G.~A. and {Vallenari}, A. and {Babusiaux}, C. and - {Bailer-Jones}, C.~A.~L. and {Bastian}, U. and {Biermann}, M. and - {Evans}, D.~W. and et al.}, - title = "{The Gaia mission}", - journal = {\aap}, -archivePrefix = "arXiv", - eprint = {1609.04153}, - primaryClass = "astro-ph.IM", - keywords = {space vehicles: instruments, Galaxy: structure, astrometry, parallaxes, proper motions, telescopes}, - year = 2016, - month = nov, - volume = 595, - eid = {A1}, - pages = {A1}, - doi = {10.1051/0004-6361/201629272}, - adsurl = {http://adsabs.harvard.edu/abs/2016A%26A...595A...1G}, - adsnote = {Provided by the SAO/NASA Astrophysics Data System} +@InProceedings{python-mesa-2020, +author="Kazil, Jackie +and Masad, David +and Crooks, Andrew", +editor="Thomson, Robert +and Bisgin, Halil +and Dancy, Christopher +and Hyder, Ayaz +and Hussain, Muhammad", +title="Utilizing Python for Agent-Based Modeling: The Mesa Framework", +booktitle="Social, Cultural, and Behavioral Modeling", +year="2020", +publisher="Springer International Publishing", +address="Cham", +pages="308--317", +abstract="Mesa is an agent-based modeling framework written in Python. Originally started in 2013, it was created to be the go-to tool in for researchers wishing to build agent-based models with Python. Within this paper we present Mesa's design goals, along with its underlying architecture. This includes its core components: 1) the model (Model, Agent, Schedule, and Space), 2) analysis (Data Collector and Batch Runner) and the visualization (Visualization Server and Visualization Browser Page). We then discuss how agent-based models can be created in Mesa. This is followed by a discussion of applications and extensions by other researchers to demonstrate how Mesa design is decoupled and extensible and thus creating the opportunity for a larger decentralized ecosystem of packages that people can share and reuse for their own needs. Finally, the paper concludes with a summary and discussion of future development areas for Mesa.", +isbn="978-3-030-61255-9" } -@ARTICLE{astropy, - author = {{Astropy Collaboration} and {Robitaille}, T.~P. and {Tollerud}, E.~J. and - {Greenfield}, P. and {Droettboom}, M. and {Bray}, E. and {Aldcroft}, T. and - {Davis}, M. and {Ginsburg}, A. and {Price-Whelan}, A.~M. and - {Kerzendorf}, W.~E. and {Conley}, A. and {Crighton}, N. and - {Barbary}, K. and {Muna}, D. and {Ferguson}, H. and {Grollier}, F. and - {Parikh}, M.~M. and {Nair}, P.~H. and {Unther}, H.~M. and {Deil}, C. and - {Woillez}, J. and {Conseil}, S. and {Kramer}, R. and {Turner}, J.~E.~H. and - {Singer}, L. and {Fox}, R. and {Weaver}, B.~A. and {Zabalza}, V. and - {Edwards}, Z.~I. and {Azalee Bostroem}, K. and {Burke}, D.~J. and - {Casey}, A.~R. and {Crawford}, S.~M. and {Dencheva}, N. and - {Ely}, J. and {Jenness}, T. and {Labrie}, K. and {Lim}, P.~L. and - {Pierfederici}, F. and {Pontzen}, A. and {Ptak}, A. and {Refsdal}, B. and - {Servillat}, M. and {Streicher}, O.}, - title = "{Astropy: A community Python package for astronomy}", - journal = {\aap}, -archivePrefix = "arXiv", - eprint = {1307.6212}, - primaryClass = "astro-ph.IM", - keywords = {methods: data analysis, methods: miscellaneous, virtual observatory tools}, - year = 2013, - month = oct, - volume = 558, - eid = {A33}, - pages = {A33}, - doi = {10.1051/0004-6361/201322068}, - adsurl = {http://adsabs.harvard.edu/abs/2013A%26A...558A..33A}, - adsnote = {Provided by the SAO/NASA Astrophysics Data System} +@article{Agents.jl, + doi = {10.1177/00375497211068820}, + url = {https://doi.org/10.1177/00375497211068820}, + year = {2022}, + month = jan, + publisher = {{SAGE} Publications}, + pages = {003754972110688}, + author = {George Datseris and Ali R. Vahdati and Timothy C. DuBois}, + title = {Agents.jl: a performant and feature-full agent-based modeling software of minimal code complexity}, + journal = {{SIMULATION}}, + volume = {0}, + number = {0}, } + + +@Article{app13010013, +AUTHOR = {Antelmi, Alessia and Cordasco, Gennaro and D’Ambrosio, Giuseppe and De Vinco, Daniele and Spagnuolo, Carmine}, +TITLE = {Experimenting with Agent-Based Model Simulation Tools}, +JOURNAL = {Applied Sciences}, +VOLUME = {13}, +YEAR = {2023}, +NUMBER = {1}, +ARTICLE-NUMBER = {13}, +URL = {https://www.mdpi.com/2076-3417/13/1/13}, +ISSN = {2076-3417}, +ABSTRACT = {Agent-based models (ABMs) are one of the most effective and successful methods for analyzing real-world complex systems by investigating how modeling interactions on the individual level (i.e., micro-level) leads to the understanding of emergent phenomena on the system level (i.e., macro-level). ABMs represent an interdisciplinary approach to examining complex systems, and the heterogeneous background of ABM users demands comprehensive, easy-to-use, and efficient environments to develop ABM simulations. Currently, many tools, frameworks, and libraries exist, each with its characteristics and objectives. This article aims to guide newcomers in the jungle of ABM tools toward choosing the right tool for their skills and needs. This work proposes a thorough overview of open-source general-purpose ABM tools and offers a comparison from a two-fold perspective. We first describe an off-the-shelf evaluation by considering each ABM tool’s features, ease of use, and efficiency according to its authors. Then, we provide a hands-on evaluation of some ABM tools by judging the effort required in developing and running four ABM models and the obtained performance.}, +DOI = {10.3390/app13010013} +} \ No newline at end of file diff --git a/paper/paper.md b/paper/paper.md index 4b16db0..153e196 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -52,25 +52,17 @@ performing numerical orbit integration). # Statement of need -`Gala` is an Astropy-affiliated Python package for galactic dynamics. Python -enables wrapping low-level languages (e.g., C) for speed without losing -flexibility or ease-of-use in the user-interface. The API for `Gala` was -designed to provide a class-based and user-friendly interface to fast (C or -Cython-optimized) implementations of common operations such as gravitational -potential and force evaluation, orbit integration, dynamical transformations, -and chaos indicators for nonlinear dynamics. `Gala` also relies heavily on and -interfaces well with the implementations of physical units and astronomical -coordinate systems in the `Astropy` package [@astropy] (`astropy.units` and -`astropy.coordinates`). - -`Gala` was designed to be used by both astronomical researchers and by -students in courses on gravitational dynamics or astronomy. It has already been -used in a number of scientific publications [@Pearson:2017] and has also been -used in graduate courses on Galactic dynamics to, e.g., provide interactive -visualizations of textbook material [@Binney:2008]. The combination of speed, -design, and support for Astropy functionality in `Gala` will enable exciting -scientific explorations of forthcoming data releases from the *Gaia* mission -[@gaia] by students and experts alike. +`mesa-frames` is an extension to the `mesa` [@python-mesa-2020] agent-based modeling framework in Python, designed to enhance performance and scalability for complex simulations involving millions of agents. + +`mesa` has become the most widely used framework for agent-based modeling in Python thanks to its easy-to-use API and object-oriented philosophy. However, iterating through each agent's behavior becomes computationally expensive when the number of agents reaches thousands [@app13010013]. This has led to the development of other frameworks like `Agents.jl` [@Agents.jl], which requires developing in another language, Julia. mesa-frames aims to achieve performance similar to that of `Agents.jl` (NOTE: this needs to be proved) but with a simpler Python syntax. + +By storing agents in tabular structures, with agents as rows and attributes as columns, mesa-frames can leverage vectorized operations implemented with speed in mind in lower-level languages. This is achieved through the `Ibis` library, while maintaining a familiar syntax for existing `mesa` users and providing an easy-to-use, expressive API thanks to many out-of-the-box functions implemented in this data manipulation library. + +This approach is particularly beneficial for models where agents can "act" simultaneously, a common scenario in fields such as economics, ecology, and social sciences. + +Thanks to Ibis being backend-agnostic, even if new, faster DataFrame backends are implemented in the future, changes to the code will be minimal because the API will remain largely unchanged. Additionally, the choice of backends allows very large models to be run in a distributed manner on clusters or using GPUs for acceleration. + +The framework's ability to handle large numbers of agents efficiently opens up new possibilities for studying complex systems, from financial markets to epidemiological models, at scales previously challenging with standard `mesa` implementations. This is achieved without requiring efforts to reimplement the code in a lower-level language with more optimizations. # Mathematics @@ -117,4 +109,4 @@ Figure sizes can be customized by adding an optional second parameter: We acknowledge contributions from Brigitta Sipocz, Syrtis Major, and Semyeong Oh, and support from Kathryn Johnston during the genesis of this project. -# References \ No newline at end of file +# References