Skip to content

graph equality that ignores epoch and migration subdivisions #333

@grahamgower

Description

@grahamgower

For epochs the idea would be to make sure the demes are "equal" in the examples below, by checking equality of sizes (and other attributes) over the demes' lifetimes rather than mandating equal numbers of epochs each with equal attribute values. The below example is obvious from visual inspection, but if you do the same with exponentially-changing epochs its less obvious! I haven't really thought through the best way of achieving this. Maybe take the union of each deme's epoch end times and split epochs for each deme at all the time points? Or instead of splitting epochs, just check deme sizes for a few (5?) evenly spaced times in each interval.

demes:
- name: A
  epochs:
  - start_size: 100
demes:
- name: A
  epochs:
  - {start_size: 100, end_time: 50}
  - {start_size: 100, end_time: 0}

And similarly for comparing migrations, the following three examples should be "equal". We could just compare resulting migration matrices here.

migrations:
 - {demes: [A, B], start_time: 100, end_time: 0, rate: 1e-4}
migrations:
 - {demes: [A, B], start_time: 100, end_time: 50, rate: 1e-4}
 - {demes: [A, B], start_time: 50, end_time: 0, rate: 1e-4}
migrations:
 - {source: A, dest: B, start_time: 100, end_time: 0, rate: 1e-4}
 - {source: B, dest: A, start_time: 100, end_time: 0, rate: 1e-4}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions