Populations

The populations group is a container for all population groups; it has no attributes or data sets.

The names of any population group is simply the name of the species.

A population group contains some attributes as well as a subgroup for each of the population’s actions. Those action subgroups contain attributes (whose names are the corresponding parameter names) and their values. Action subgroups may even contain subgroups with arbitrary structure themselves - it is the action’s responsibility to write and read that data.

This is an example of an action subgroup:

GROUP "OldAgeDeath" {
    ATTRIBUTE "OAD_max_age" {
       DATATYPE  H5T_IEEE_F64LE
       DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
       DATA {
       (0): 64.1699
       }
    }
    ATTRIBUTE "OAD_uncertainty" {
       DATATYPE  H5T_IEEE_F64LE
       DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
       DATA {
       (0): 0.1
       }
    }
 }

The following figure shows an example for the structue of the group “Populations” for two populations with different actions and data sets.

../../images/popgroups.png

The QDF Group “Populations” with subgroups for species “Population_A” and “Population_B”. Both populations have data sets, action subgroups and some attributes.

Population Group Attributes

  • NumCells

    Number of nodes

  • ClassName

    Name of the population class

  • SpeciesName

    Name of the species (two discern two different types of species based on the same population class)

  • PrioInfo

    Priority information for the actions. This attribute’s value is a small array of action names and their values.

  • InitialSeed

    The seed used to initialize this population’s random number generator.

  • QDFVersion

    The version of the QDF format used (there was a big difference of the population group formats between versions 3 and 4).

Population Group Dataset

AgentDataSet

The format of a population’s data set depends on the personal parameters of the agents. Conceptually, this data set is an array of structuress containing the agents’ parameters.

Example:

DATASET "AgentDataSet" {
    DATATYPE  H5T_COMPOUND {
        H5T_STD_I32LE "LifeState";
        H5T_STD_I32LE "CellIdx";
        H5T_STD_I32LE "CellID";
        H5T_STD_I64LE "AgentID";
        H5T_IEEE_F32LE "BirthTime";
        H5T_STD_U8LE "Gender";
    }
    DATASPACE  SIMPLE { ( 101 ) / ( 101 ) }
        DATA {
        (0): {
              1,
              151,
              151,
              1,
              -6,
              0,
        },
        (1): {
              1,
              92,
              92,
              2,
              -7,
              1,
        },
        ...
    }
}

Subgroups within action subgroups

Action subgroups of a population can contain attributes, data sets and subgroups with arbitrary contents. Usually the implementation corresponding to the action subgroup is responsible for reading and writing the data.

Here is an example of a action subgroup AgentBinSplitter containing a subgroup SubPopGroups which again contains 2 subgroups, SubPop_000 and SubPop_001 (each of which contains a data set).

GROUP "Populations" {
   GROUP "sapiens" {

   ...

      GROUP "AgentBinSplitter" {
         GROUP "SubPopulations" {
            GROUP "SubPop_000" {
               DATASET "AgentDataSet" {
                  DATATYPE  H5T_COMPOUND {
                     H5T_STD_I32LE "LifeState";
                     H5T_STD_I32LE "CellIdx";
                     H5T_STD_I32LE "CellID";
                     H5T_STD_I64LE "AgentID";
                     H5T_IEEE_F32LE "BirthTime";
                     H5T_STD_U8LE "Gender";
                     H5T_IEEE_F32LE "Age";
                     H5T_IEEE_F32LE "LastBirth";
                     H5T_IEEE_F32LE "ViralLoad";
                     H5T_IEEE_F32LE "Immunity";
                  }
                  DATASPACE  SIMPLE { ( 5 ) / ( 5 ) }
               }
            }
            GROUP "SubPop_001" {
               DATASET "AgentDataSet" {
                  DATATYPE  H5T_COMPOUND {
                     H5T_STD_I32LE "LifeState";
                     H5T_STD_I32LE "CellIdx";
                     H5T_STD_I32LE "CellID";
                     H5T_STD_I64LE "AgentID";
                     H5T_IEEE_F32LE "BirthTime";
                     H5T_STD_U8LE "Gender";
                     H5T_IEEE_F32LE "Age";
                     H5T_IEEE_F32LE "LastBirth";
                     H5T_IEEE_F32LE "ViralLoad";
                     H5T_IEEE_F32LE "Immunity";
                  }
                  DATASPACE  SIMPLE { ( 5 ) / ( 5 ) }
               }
            }
            GROUP "SubPop_002" {
               DATASET "AgentDataSet" {
                  DATATYPE  H5T_COMPOUND {
                     H5T_STD_I32LE "LifeState";
                     H5T_STD_I32LE "CellIdx";
                     H5T_STD_I32LE "CellID";
                     H5T_STD_I64LE "AgentID";
                     H5T_IEEE_F32LE "BirthTime";
                     H5T_STD_U8LE "Gender";
                     H5T_IEEE_F32LE "Age";
                     H5T_IEEE_F32LE "LastBirth";
                     H5T_IEEE_F32LE "ViralLoad";
                     H5T_IEEE_F32LE "Immunity";
                  }
                  DATASPACE  SIMPLE { ( 5 ) / ( 5 ) }
               }
            }
         }
      }
   }
}

Note: every agent subgroup named “SubPopulations” is recognized by the QDF format visit plugin, and its subgroups are interpreted as (simple) population groups.