Empirical

Empirical: A scientific software library for research, education, and public engagement - Published in JOSS (2024)

https://github.com/devosoft/empirical

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    8 of 36 committers (22.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 4 months ago · JSON representation ·

Repository

A library of tools for scientific software development, with emphasis on also being able to build web interfaces using Emscripten.

Basic Info
  • Host: GitHub
  • Owner: devosoft
  • License: other
  • Language: C++
  • Default Branch: master
  • Size: 72.8 MB
Statistics
  • Stars: 86
  • Watchers: 13
  • Forks: 38
  • Open Issues: 115
  • Releases: 10
Created over 11 years ago · Last pushed 5 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Empirical Logo

Empirical is a library of tools for developing useful, efficient, reliable, and available scientific software. The provided code is header-only and encapsulated into the emp namespace, so it is simple to incorporate into existing projects.

status CI Documentation Status DOI codecov DockerHub Documentation Coverage GitHub contributors

See our Built With Empirical Gallery for examples of web tools built with Empirical.

See our Quick Start Guides to start using the library.

Starting out on a new project that will use Empirical? Take a look at the cookiecutter Empirical project template for automatically setting up a directory structure with all the files you need to get started -- step-by-step instructions included!

Tools in Empirical include:

  • Web-enabled elements to facilitate compiling to JavaScript and with a full web interfaces, using Mozilla's Emscripten compiler (from C++ to high-efficiency JavaScript).
  • Debug tools to facilitate audited memory management; these tools are turned off outside of debug mode allowing the full speed of raw pointers and normal standard library components.
  • A wide range of Helper tools to streamline common scientific computing tasks such as configuration, data management, mathematical manipulations, etc. All of these are designed to be easy-to-use and efficient.
  • A powerful set of evolution tools for building Artificial Life or Evolutionary Computation software.
  • A signal-action system that allows for efficient customization of tools, and flexible software that can easily facilitate plug-in functionality.

See https://empirical.readthedocs.io/en/latest for more detailed documentation on the available source files.

Citing

If Empirical contributes to a scientific publication, please cite it as

Vostinar, A., Lalejini, A., Ofria, C., Dolson, E., & Moreno, M.A. (2024). Empirical: A scientific software library for research, education, and public engagement. Journal of Open Source Software, 9(98), 6617, https://doi.org/10.21105/joss.06617

bibtex @article{devosoft2024empirical, year = {2024}, publisher = {The Open Journal}, author = {Vostinar, Anya and Lalejini, Alexander and Ofria, Charles and Dolson, Emily and Moreno, Matthew Andres}, title = {Empirical: A scientific software library for research, education, and public engagement}, journal = {Journal of Open Source Software}, volume = {9}, number = {98}, pages = {6617}, doi = {10.21105/joss.06617}, url = {https://doi.org/10.21105/joss.06617}, }

Please cite phylogeny tracking tools separately as shown here. And don't forget to leave a star on GitHub!

Directory Structure

| Folder | Description | ------------ | ---- | demos/ | examples of mini projects using Empirical | doc/ | Documentation files (including for auto generation of docs) | examples/ | Example code for many of the above tools (sub-directory structure parallels source/) | include/ | Header files that make up the Empirical library (see below for details) | Planning/ | Scattered notes about future development (most notes found in GitHub issue tracker) | tests/ | Unit tests | third-party/ | Non-empirical dependencies

Sub-folders in include/emp directory

| Sub-Folder | Description | ----------- | ---- | base/ | Debug tools used throughout Empirical for fast and efficient memory management | bits/ | Tools for conveniently and efficiently working with bit representations | config/ | Tools to build a simple configuration system (including compile-time optimizations) | control/ | Signaling tools allowing for fast and dynamic interaction across components | compiler/ | Components for compiling code | data/ | Tools for easy data management and output | datastructs/| A variety of useful data structures and tools for using data structures | debug/ | Tools to facilitate debugging (particularly of emscripten-generated web code) | functional/ | Tools for handling functions, sets of functions, and memoization | games/ | Implementations of simple games | geometry/ | Geometry and physics-based tools for implementing simple virtual worlds | hardware/ | Implementation of basic virtual hardware that is easy to configure | io/ | Tools for handling input/output | matching/ | Tools for tag-based matching | math/ | Generally useful tools for math and randomness | meta/ | Helpful tools for template meta-programming | prefab/ | Prefabricated web elements to drop onto web pages | scholar/ | Tools for tracking authors, citations, and bibliographies | tools/ | Basic tools that are generally useful for scientific software | web/ | Tools for building web interfaces (more low-level than in prefab) | Evolve/ | Specialized tools for building Artificial Life or Evolutionary Computation projects | in_progress/| Tools that are being worked on, but not at all ready for public consumption

Development Status

Empirical is under heavy development. As such, many source files have at least one of the following statuses:

| Status | Meaning | ------ | ------- | DESIGN | Notes are in place, but no (or minimal) working code | EXPLORATORY | Some functionality may work, but needs re-engineering to get right | ALPHA | Some basic functionality works, but more features still need to be added and tested | BETA | Basic functionality is all in place, but needs more thorough testing. | RELEASE | Well-tested functionality and used in multiple projects, at least by authors | STABLE | Used by many non-authors in assorted projects without fixes for extended period | ABANDONED | May have worked, or may not; no longer being developed | BROKEN | Once worked (at least BETA level), but now needs to be repaired (not abandoned!) | CLEANUP | At least BETA, but needs code cleanup, fixing of warnings, etc | DEPRECATED | Functionality has been replaced and should shift to replacement. | EXTERNAL | Part of another project (cited above); not developed as part of Empirical

Levelization

The structure of Empirical is levelized to facilitate development and testing. This means that all directories are on a level where dependencies are either internal to that directory or on lower levels. Likewise, within a directory, files have a level and depend only on other files at lower levels.

| Level | Folders | ---- | ---- | 0 | base/ | 1 | meta/ | 2 | tools/ | 3 | config/ control/ data/ games/ geometry/ hardware/ scholar/ | 4 | Evolve/ (data, control) web/ (config, control)

Owner

  • Name: Digital Evolution Software
  • Login: devosoft
  • Kind: organization
  • Location: Michigan State University, East Lansing, MI

JOSS Publication

Empirical: A scientific software library for research, education, and public engagement
Published
June 02, 2024
Volume 9, Issue 98, Page 6617
Authors
Anya Vostinar ORCID
Computer Science, Carleton College, USA
Alexander Lalejini ORCID
Computer Science, Grand Valley State University, USA
Charles Ofria ORCID
BEACON Center for the Study of Evolution in Action, USA, Computer Science and Engineering, Michigan State University, USA, Ecology, Evolutionary Biology, and Behavior, Michigan State University, USA
Emily Dolson ORCID
BEACON Center for the Study of Evolution in Action, USA, Computer Science and Engineering, Michigan State University, USA, Ecology, Evolutionary Biology, and Behavior, Michigan State University, USA
Matthew Andres Moreno ORCID
Computer Science, Carleton College, USA, Ecology and Evolutionary Biology, University of Michigan, USA, Center for the Study of Complex Systems, University of Michigan, USA
Editor
AHM Mahfuzur Rahman ORCID
Tags
Simulation Agent-based modeling Emscripten

Citation (CITATION.cff)

# YAML 1.2
# Metadata for citation of this software according to the CFF format (https://citation-file-format.github.io/)
cff-version: "1.2.0"
authors:
- given-names: Charles
  family-names: Ofria
  orcid: 'https://orcid.org/0000-0003-2924-1732'
  affiliation: Michigan State University
- given-names: Matthew Andres
  family-names: Moreno
  affiliation: University of Michigan
  orcid: 'https://orcid.org/0000-0003-4726-4479'
- given-names: Emily
  family-names: Dolson
  affiliation: Michigan State University
  orcid: 'https://orcid.org/0000-0001-8616-4898'
- given-names: Alexander
  family-names: Lalejini
  orcid: 'https://orcid.org/0000-0003-0994-2718'
  affiliation: Grand Valley State University
- given-names: Santiago
  family-names: Rodriguez Papa
- given-names: Jake
  family-names: Fenton
- given-names: Katherine
  family-names: Perry
- given-names: Steven
  family-names: Jorgensen
- given-names: hoffmanriley
  family-names: ''
- given-names: grenewode
  family-names: ''
- given-names: Oliver
  family-names: Edwards
  name-particle: Baldwin
  affiliation: Amherst College
- given-names: Jason
  family-names: Stredwick
  affiliation: Appdiff Inc. (test.ai)
- given-names: cgnitash
  family-names: ''
- given-names: theycallmeHeem
  family-names: ''
- given-names: Anya
  family-names: Vostinar
  orcid: 'https://orcid.org/0000-0001-7216-5283'
  affiliation: Carleton College
- given-names: Ryan
  family-names: Moreno
- given-names: Jory
  family-names: Schossau
  affiliation: Michigan State University
- given-names: Luis
  family-names: Zaman
  affiliation: University of Michigan
- given-names: djrain
  family-names: ''
doi: 10.5281/zenodo.11420797
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Vostinar
    given-names: Anya
    orcid: "https://orcid.org/0000-0001-7216-5283"
  - family-names: Lalejini
    given-names: Alexander
    orcid: "https://orcid.org/0000-0003-0994-2718"
  - family-names: Ofria
    given-names: Charles
    orcid: "https://orcid.org/0000-0003-2924-1732"
  - family-names: Dolson
    given-names: Emily
    orcid: "https://orcid.org/0000-0001-8616-4898"
  - family-names: Moreno
    given-names: Matthew Andres
    orcid: "https://orcid.org/0000-0003-4726-4479"
  date-published: 2024-06-02
  doi: 10.21105/joss.06617
  issn: 2475-9066
  issue: 98
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 6617
  title: "Empirical: A scientific software library for research,
    education, and public engagement"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.06617"
  volume: 9
title: "Empirical: A scientific software library for research,
  education, and public engagement"
version: 1.1.5
repository-code: https://github.com/devosoft/Empirical
license: MIT

GitHub Events

Total
  • Delete event: 2
  • Issue comment event: 4
  • Push event: 65
  • Pull request review event: 4
  • Pull request review comment event: 4
  • Pull request event: 15
  • Create event: 10
Last Year
  • Delete event: 2
  • Issue comment event: 4
  • Push event: 65
  • Pull request review event: 4
  • Pull request review comment event: 4
  • Pull request event: 15
  • Create event: 10

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 11,899
  • Total Committers: 36
  • Avg Commits per committer: 330.528
  • Development Distribution Score (DDS): 0.298
Past Year
  • Commits: 572
  • Committers: 3
  • Avg Commits per committer: 190.667
  • Development Distribution Score (DDS): 0.044
Top Committers
Name Email Commits
Charles Ofria c****a@g****m 8,359
Matthew Andres Moreno m****n@g****m 1,269
Emily Dolson E****n@g****m 919
Alexander Lalejini a****i@g****m 420
rodsan0 r****0 219
Katherine Perry p****2@m****u 117
Austin Ferguson f****j@g****m 97
kayakingCellist b****s@s****u 88
Jake Fenton b****f@g****m 85
Tait Weicht t****t@i****m 72
Steven Jorgensen s****4@g****m 41
Matthew Andres Moreno m****o@g****m 37
Riley Hoffman u****s@g****m 37
NateRiz r****t@m****u 36
grenewode g****r@g****m 27
abbywlsn a****8@g****m 17
Oliver-BE o****s@g****m 8
Riley Hoffman h****5@m****u 8
anyaevostinar a****r@g****m 7
Jason Stredwick j****k@g****m 6
Anya V a****o@g****m 4
Replit user 4
Raheem Clemons t****m@g****m 3
Jose j****4@g****m 3
Charles Ofria c****s@C****l 2
Jory Schossau j****u@g****m 2
Luis Zaman l****n@g****m 2
cgnitash c****h@g****m 2
djrain 3****n 1
Acacia Ackles a****s@m****u 1
and 6 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 23
  • Total pull requests: 88
  • Average time to close issues: 9 months
  • Average time to close pull requests: 4 months
  • Total issue authors: 9
  • Total pull request authors: 14
  • Average comments per issue: 0.74
  • Average comments per pull request: 1.51
  • Merged pull requests: 51
  • Bot issues: 0
  • Bot pull requests: 14
Past Year
  • Issues: 1
  • Pull requests: 12
  • Average time to close issues: N/A
  • Average time to close pull requests: 16 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.42
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 5
Top Authors
Issue Authors
  • mmore500 (8)
  • LTLA (3)
  • lemniscate8 (3)
  • emilydolson (3)
  • anyaevostinar (2)
  • mercere99 (1)
  • rodsan0 (1)
  • naalit (1)
  • FergusonAJ (1)
Pull Request Authors
  • mmore500 (45)
  • dependabot[bot] (21)
  • emilydolson (17)
  • FergusonAJ (7)
  • mercere99 (4)
  • lemniscate8 (4)
  • danielskatz (2)
  • amlalejini (1)
  • anyaevostinar (1)
  • jgh9094 (1)
  • perryk12 (1)
  • naalit (1)
  • schmi710 (1)
  • grenewode (1)
Top Labels
Issue Labels
Goal: Enhancement (12) Goal: Bug Fix (10) Topic: Testing (2) Topic: Core Tools (2) Topic: Web Interface (2) Topic: Data tools (1) Topic: Tools (1) Goal: Refactoring (1) Goal: Discussion / Decision making (1)
Pull Request Labels
dependencies (21) Merge: Ready!! (13) Goal: Enhancement (12) Merge: Not Ready (8) Goal: Bug Fix (6) python (6) Topic: Web Interface (4) Topic: Emscripten Tools (4) Topic: Evolution Framework (3) github_actions (2) Topic: Testing (2) Goal: Refactoring (2) Goal: Recruit Help! (1) Topic: Core Tools (1) Goal: Need Answer! (1) Priority: High (1) Topic: Virtual Hardware (1)

Dependencies

third-party/package.json npm
  • chai 4.2.0 development
  • jquery 3.5.1 development
  • jsdom 16.4.0 development
  • karma 5.0.9 development
  • karma-chai 0.1.0 development
  • karma-chrome-launcher 3.1.0 development
  • karma-firefox-launcher 1.3.0 development
  • karma-mocha 2.0.1 development
  • karma-spec-reporter 0.0.32 development
  • mocha 7.2.0 development
doc/requirements.in pypi
  • breathe ==4.22.1
  • coverxygen ==1.5.0
  • docutils ==0.17.1
  • exhale ==0.2.3
  • myst-parser ==0.12.9
  • sphinx ==3.2.1
  • sphinx-rtd-theme ==0.5.0
doc/requirements.txt pypi
  • alabaster ==0.7.12
  • attrs ==20.3.0
  • babel ==2.9.1
  • beautifulsoup4 ==4.10.0
  • breathe ==4.22.1
  • bs4 ==0.0.1
  • certifi ==2021.10.8
  • charset-normalizer ==2.0.7
  • coverxygen ==1.5.0
  • docutils ==0.17.1
  • exhale ==0.2.3
  • idna ==3.3
  • imagesize ==1.2.0
  • jinja2 ==3.0.2
  • lxml ==4.6.3
  • markdown-it-py ==0.5.8
  • markupsafe ==2.0.1
  • myst-parser ==0.12.9
  • packaging ==21.0
  • pygments ==2.10.0
  • pyparsing ==3.0.2
  • pytz ==2021.3
  • pyyaml ==6.0
  • requests ==2.26.0
  • six ==1.16.0
  • snowballstemmer ==2.1.0
  • soupsieve ==2.2.1
  • sphinx ==3.2.1
  • sphinx-rtd-theme ==0.5.0
  • sphinxcontrib-applehelp ==1.0.2
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==2.0.0
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.5
  • urllib3 ==1.26.7
third-party/requirements.in pypi
  • arrow ==0.17.0
  • charset_normalizer 2.0.7
  • cookiecutter *
  • diff *
  • gcovr *
third-party/requirements.txt pypi
  • arrow ==0.17.0
  • attrs ==21.2.0
  • binaryornot ==0.4.4
  • certifi ==2021.10.8
  • chardet ==4.0.0
  • charset_normalizer 2.0.7
  • click ==8.0.3
  • cookiecutter ==1.7.3
  • diff ==0.6.1
  • gcovr ==5.0
  • idna ==3.3
  • jinja2 ==3.0.2
  • jinja2-time ==0.2.0
  • lxml ==4.6.3
  • markupsafe ==2.0.1
  • poyo ==0.5.0
  • pygments ==2.10.0
  • python-dateutil ==2.8.2
  • python-slugify ==5.0.2
  • requests ==2.26.0
  • six ==1.16.0
  • text-unidecode ==1.3
  • urllib3 ==1.26.7
  • zope.interface ==5.4.0
.github/workflows/CI.yml actions
  • GabrielBB/xvfb-action v1 composite
  • actions/checkout v2 composite
  • docker/build-push-action v1 composite
  • mmore500/actions-setup-docker 94429ebc8d9edb4e8c8afb2667bce1e89435f74f composite
  • sylvanld/action-storage v1 composite
Dockerfile docker
  • ubuntu bionic-20210416 build