One emphasis in the projects on which I work is the creation of tools that can be used outside the original context in which they were designed. This emphasis is in part the result of simple good design (different functions should be placed in different components), but there are other benefits as well: the wider community can reuse and assess my code more easily, and results of my work are more easily replicated.
This toolkit was created as part of the Hohokam Water Management Simulation Project, funded by the McDonnell Foundation and sponsored by Arizona State University's Global Institute of Sustainability.
The thrust of the ABCM is the combination of a simulation model and a database. The name 'Assertion-Based' is derived from the idea that entries in a relational database should be considered logical assertions; the database engine is thus a logical engine for deducing additional truths from initial assertions. Simulation code is an extension of this, but the basic principle is identical- that is, one could write the entire simulation code as a collection of database operations; one can also view the simulation as simply a different way to retrieve calculated data from a database. Each view involves practical challenges, but logically they are the same.
The ABCM implementation of this carries a suite of implications for the practice of the science it permits:
This kind of problem inheres in the archaeological investigation of potential complex dynamics in prehistoric contexts. The ABCM framework facilitates the construction of a simulation in the following ways:
J-SENSE is a statistical package in Java that allows the easy calculation of statistics that define the level of mixing in populations of related individuals who are associated within that population in smaller groups. The basic case can be described simply: Imagine a population that consists of two kinds of individuals, A and B. These 'kinds' can represent genetic lineages, but the details aren't needed. Imagine further that the individuals in this population are assorted into some number of separate groups (i.e. 100 individuals are divided into 25 groups of 4 individuals each). The statistics calculated by the J-SENSE package are designed to understand the nature of these groups. The groups, for example, may all consist of 2 A's and 2 B's, or they may consist of 12 groups of A's, 12 groups of B's and one mixed group with the remaining 4 individuals. Biologically the range of possible combinations carries important implications, particularly in situations in which common group membership leads to higher likelihood of combination and reproduction.
The Pepper paper presents an array of calculations that fall into a few categories; within each category, several alternative formulas are provided that arrive at the same result. The J-SENSE package matches this division exactly. One major division is between statistics that are calculated on every individual's entire group- counting itself- and those that are calculating on every individual's group of neighbors but excluding itself. For each of these two kinds of calculation there are two additional formulas, one that arrives at the value for a given network of group membership and one that calculates an expected value assuming that group membership is the result of random assortment.
For each kind of calculation Pepper provides a number of alternative formulas; these are implemented in J-SENSE as separate algorithms. Even though theoretically each alternative formula for a given statistic should arrive at the same result, some algorithms make assumptions about the data set that, when violated, make the algorithm unusable. For example, one formula may rely on the assumption that no individuals are in groups where they are the only members (isolated individuals), and applying the associated algorithm will cause an error (such as a division by zero error). J-SENSE intelligently traps these errors and allows the user or calling programs to select formulas and algorithms that will not fail.
An imperative for the creation of the J-SENSE package was the need to account for group associations of any kind; underlying the J-SENSE calcutor is a data structure akin to a sociomatrix. This draws J-SENSE toward the domain of Social Network Analysis. Group membership may be directed or undirected; groups may be non-overlapping (each group is separate from any other group) or continuous.
The J-SENSE package is available as jsense.jar, with JavaDoc here and downloadable as a zip file.
See Pepper, John W. (2000) Relatedness in Trait Group Models of Social Evolution. Journal of Theoretical Biology 206:355-368.