Model genetic data in cemetery

48 views
Skip to first unread message

ineslopezl...@gmail.com

unread,
Apr 2, 2026, 12:17:03 PMApr 2
to OxCal
Hello

I would to get some advice on how to add/interpret genetic data on a model, please.

We have two dated individuals (an infant 3-4 yr old at death and an adult 35-40 yr old at death) who are related on 1st degree but we don't know if they are mother&daughter or siblings. I'm trying to solve this combining osteological evidence for age-at-death and radiocarbon ages. Incidentally, they are both in graves cut by other graves (individuals not related at 1 or 2nd degree), also radiocarbon dated. I will want to estimate if they could be relatives beyond 3 generations apart but that's a separate issue.

I've tried different things but I'm not sure if I am getting there. I think the first two options with a Difference function are both telling me the same, they died 15 years apart minimum so they would have likely ages for being either mother and child as well as sisters. 

Simple function Difference?

 Plot()
 {
  Sequence()
  {
   Boundary("Start 1");
   Sequence("1")
   {
    R_Date("infant",1369,25);
    R_Date("adult",1262,24);
    Difference("Difference","adult","infant");
   };
   Boundary("End 1");
  };
 };

Function Difference with a time constraint, but with a large uncertainty as I am not sure if 1 or 2 generations are represented:

 Plot()
 {
  Sequence()
  {
   Boundary("Start 1");
   Sequence("1")
   {
    R_Date("infant",1369,25);
    R_Date("adult",1262,24);
    Difference("Difference","adult", "infant", N(25,25));
   };
   Boundary("End 1");
  };
 };

Span for up to 2 generations:

 Plot()
 {
  Sequence()
  {
   Boundary("Start 1");
   Sequence("1")
   {
    R_Date("infant",1369,25);
    R_Date("adult",1262,24);
    Span("Difference 8381-8170",U(0,50));
   };
   Boundary("End 1");
  };
 };

It's only this latter that I think answers the question, and they are more likely sisters (dieing 25-50 years apart). Does this make sense and is it an acceptable way of going about it?

Thanks for your help!

Ines

Erik Marsh

unread,
Apr 21, 2026, 8:38:38 AMApr 21
to OxCal
Hi Ines – interesting problem.

1. On the stratigraphic relationships: Your sequences place the infant before the adult, but what is that based on? It may be better to leave them in a phase, without defining the sequence (if they are siblings from the same grave there is no reason to assume a sequence). I would definitely include the dated graves that cut into these – dates from adjacent contexts (on human bone or anything else) can be really useful in constraining dates, just make sure to follow the depositional sequence and sort by context, not individual.
2. These short temporal spans means you have to look at the age of tissue formation. A tooth date will be from the early part of the individual's life; rib will be from the very end. At this scale, it's important to take this into account. I first saw this in Millard et al. (2020). You can add or subtract from the estimated age at death to get the date of birth (or death) – it is more useful to compare these dates than the 14C dates.
3. I have seen papers compare the expected lapses between deaths for relatives, but these are quite large and not that precise – it is possible for siblings to die many decades apart. I have gotten better results by using expected lapses between births. For example, there is quite consistent global pattern (in data since the 1950s) that mothers tend to be 24±6 years old when they have a child (any child, not only the first). This is similar to the estimate of 23±3, which is based on mutations over the last 250,000 years (Wang et al., 2023). Anyway, there are quantitative ways to treat generation length that include error ranges.

I have published a few examples of this (albeit buried in supplementary material) in these two papers (below). Maybe they'll be useful to you; they include the OxCal code.
Hope this helps,
Erik

Lane, K., Marsh, E.J., 2024. Absolute Chronology revisited: Integrating precise Bayesian models from Machu Picchu with Inca ethnohistoric praise narratives. Quaternary International 703, 21–31. https://doi.org/10.1016/j.quaint.2023.11.006

Quilter, J., Harkins, K., Fanco Jordan, R., Marsh, E., Prieto, G., Verano, J., LeBlanc, S., Broomandkhoshbacht, N., Krigbaum, J., & Fehren-Schmitz, L. (2025). Family relations of Moche elite burials on the North Coast of Peru (~500 CE): Analyses of the Señora de Cao and relatives. Proceedings of the National Academy of Sciences, 122(1), e2416321121. https://doi.org/10.1073/pnas.2416321121

ineslopezl...@gmail.com

unread,
Apr 24, 2026, 6:38:04 AMApr 24
to OxCal
Hi Erik

Thank you for your reply and your suggestions. I didn't include the age of tissue formation, they are both long bones. I'll have a look in detail at the model in your paper, it seems it will be a useful example to follow.

Best

Ines

ineslopezl...@gmail.com

unread,
May 6, 2026, 12:00:34 PMMay 6
to OxCal
Hi Erik

Thank you again for your previous message and your suggestions of papers. They have proven very useful!

I have added the other burials and changed to a phase as you suggested (I was initially working with a sequence based on the order of the graves I had estimated in a separate model). I have still not included an offset for the age of tissue formation as being long bones they would be close to time of death. Following the example of your paper in Quitter2024, I've estimated the birth ages. I've also calculated the order and the conclusion is the same as I obtained before, the related individuals (infany 8183 and female 8170) are likely sisters (the infant died earlier), does this make sense and could I check if my code looks ok (see below)? Always good to have second opinions!

Thanks for your help!

Ines

 Plot()
 {
  Sequence()
  {
   Boundary("Start related intercuttings");
   Phase("related intercuttings")
   {
    Sequence("intercutting graves 8638 and 8389")
    {
     Date("Birth infant",R_Date("8381",1369,25)-U(3,4));
     Date("Birth adult female 8369",R_Date("8369",1265,25)-U(35,45));
    };
    Sequence("intercutting graves 8144 and 8144b")
    {
     Date("Birth adult female 8170",R_Date("8170",1262,24)-U(35,40));
     Date("Birth adult male",R_Date("8145",1269,24)-U(40,50));
    };
   };
   Boundary("End related intercuttings");
  };
  Order("Order of births")
  {
   Date("=Birth infant");
   Date("=Birth adult female 8369");
   Date("=Birth adult female 8170");
   Date("=Birth adult male");
  };
 };

Erik Marsh

unread,
May 11, 2026, 7:22:13 PM (10 days ago) May 11
to OxCal
Hi Inés, this looks much better. You're right, the final result might not change but it is much better grounded. Those two depositional sequences are very useful to constrain the dates. More dates in this general phase might also help constrain overall ranges. I like your comparison of Birth dates to check for possible relationships. I would suggest adding a Difference query, which will better quantify what you want to show: the (presumably short) lapse between the births of the two potential sisters and the larger lapse with the infant.

I would suggest a few tweaks that may affect your results. I would suggest using Death dates in those sequences instead of Birth, since that is closer to when the deposits were made. I would not assume long bone tissue formed near death. On the contrary, they probably formed during adolescence. But data for specific bones are sparse and you probably will have to use a wide uniform range that increases the uncertainties. See Ubelaker et al. 2022, who suggest 20–30 year lag times (also see his other papers). Both of these changes could move your birth and death dates by a few decades.

Hope this helps
Erik

ineslopezl...@gmail.com

unread,
May 12, 2026, 4:26:54 AM (10 days ago) May 12
to OxCal
Hi Eril

Thank you for your comments and further references, very useful!

Best

Ines
Reply all
Reply to author
Forward
0 new messages