Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

paper: Adding Statement of Need #107

Open
wants to merge 2 commits into
base: paper
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 44 additions & 80 deletions paper/paper.bib
Original file line number Diff line number Diff line change
@@ -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 = {<p>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.</p>},
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}
}
32 changes: 12 additions & 20 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked https://arxiv.org/pdf/2101.10072, and there was no evidence that Agents.jl was a reaction to Mesa being slow. Additionally, in the paper:

From our perspective, the biggest take-away of this paper is that Agents.jl is a framework that is simple to use, requiring small amount of written code from the user and overall easy to learn. Despite this, our comparison shows that Agents.jl always exceeds other frameworks in performance, and often also in capability

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right there's no consequence of Agents.jl being born out of mesa's speed. I just wanted to remark that the performance of mesa-frames is similar to the one of Agents.jl but the code is in Python.
Maybe it's better to leave out Agents.jl completely?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concrete benchmark comparison with Agents.jl is still worth it. They have the official benchmark repo.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very useful. Before implementing the models needed for the benchmark, I would reimplement mesa-frames in Ibis.


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

Expand Down Expand Up @@ -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
# References