Skip to content

Remove ordering requirement for the individuals table #1774

@bhaller

Description

@bhaller

In #1138 it was decided to require an ordering for the individuals table: children must come after their individual parents. This has turned out to be a problem for SLiM, because it has its own ordering requirements for the individuals table which conflict with this policy. This was not noticed until now because SLiM wasn't using the parents column; but now that it is putting pedigree-based info in the parents column, now we have a conflict between the two ordering policies. Further discussion of that can be found at MesserLab/SLiM#231.

Discussion on Slack indicates that nobody is actually using this ordering requirement for anything, and that the best solution might be to simply remove tskit's ordering requirement. Quoting @jeromekelleher throughout:

Short answer, "no" we're not doing anything with it, and actually, I was wondering if we had got it wrong too. It actually feels quite unnatural when you start working with it, especially if you were to simulate a pedigree in the correct time direction (i.e., backwards 😉). You'd end up having to reverse the individual table, or else buffer all your individuals and write them in afterwards.

Are you talking about removing the sortedness requirement entirely, or reversing to children-before-parents?

I'm open to either.

...

To be honest I haven't found any advantage to having the sort order so far, it's basically just gotten in the way. Any time you try to rely on it, you end up just sorting by time in any case because weird corner cases crop up with ordering of edges otherwise.

Given that the number of individuals will typically be relatively small, that sort of thing isn't a big deal, so I'd not be particularly upset if we ditched the ordering requirement.

So. Any objections to simply removing this sorting requirement? @petrelharp @benjeffery not sure who else to tag...

Metadata

Metadata

Assignees

Labels

C APIIssue is about the C API

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions