在遗传谱系学中,X 染色体数据有助于与某些祖先联系起来。这在以下位置得到了很好的说明:X-DNA Inheritance Chart
我的 Neo4j 数据库具有每个人的节点以及连接它们的父亲和母亲的关系。每个节点都有一个属性 sex(代表 Person 的性别;M 或 F)。雌性有两条 X 染色体,一条来自父母一方。男性有一条 X 染色体,总是来自母亲。
您可以使用 reduce 来查看与祖先继承有关的性别:
match p=(n:Person{RN:1})-[:father|mother*..20]->m
return m.fullname as FullName
,reduce(status ='', q IN nodes(p)| status + q.sex) AS c
order by length(p), c
因此,从男性 (RN:1) 开始,c 的结果是他父亲的 MM 和他母亲的 MF,祖父的 MMM 和外祖父的 MFM,等等。这个模式表明,当 c 包含 MM (两个 Ms 按顺序在一起)这些对起始人的 X 染色体没有贡献。
我想删除任何具有 MM 模式的节点。使用外部代码很容易做到这一点,但我无法弄清楚如何在密码查询中做到这一点。