遺伝的系図では、X 染色体データは特定の祖先に関連付けるのに役立ちます。これはX-DNA Inheritance Chartでよく説明されています。
私のNeo4jデータベースには、各人物のノードと、父と母のそれらを結ぶ関係があります。各ノードにはプロパティ sex (Person の性別 M または F) があります。女性は、両親のどちらかから 1 つずつ、合計 2 つの X 染色体を持っています。男性は、常に母親から X 染色体を 1 つ持っています。
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 ( 2 つの M が連続して一緒に)、これらが開始者の X 染色体に寄与していないことを確認します。
MM パターンを持つノードを削除したいと考えています。外部コードでこれを行うのは簡単ですが、暗号クエリ内でそれを行う方法がわかりません。