Skip to main content

Genetic genealogy tool for tree structure inference

Project description

kgenealogic

kgenealogic is a tool for genetic genealogy. It clusters relatives into a hypothesized family tree based on shared and unshared DNA.

Features

  • Supports GEDmatch pairwise segment and triangulation files
  • Uses both presence and inferred absence of triangulation
  • Allows, but doesn't require, specifying known relatives at each level of the family tree

Installation

It is highly recommended to use a virtual environment for installing kgenealogic and its dependencies (e.g., conda, venv, etc.). Within the virtual environment, just run:

pip install kgenealogic

Usage

python3 -m kgenealogic init [-p <project-file>]
python3 -m kgenealogic add [-p <project-file>] ... # files to import
python3 -m kgenealogic cluster [-p <project-file>] [-o <out-file>] <config-file>

python3 -m kgenealogic --help # general help
python3 -m kgenealogic <command> --help # help for <command>, e.g. init/add/build/cluster

Algorithms

Clustering

Clustering is performed by recursive greedy approximation of a min-cut of a genetic closeness graph.

Specifically, the sums of the (cM) lengths of pairwise matches form the edge-weights of a base graph. We add to these weights the positive and negative lengths of triangulations for which the "source" kit of the triangle is listed as a "seed" in the clustering configuration file. When processing a particular node of the tree, we use triangulations for seeds at that node or on its path to the root (descendants when viewed as a family tree, ancestors when viewed as a tree data structure).

Having formed this graph at a particular node of the tree, we consider seeds listed in the clustering configuration in the maternal or paternal branches of the node. For each connected component of the graph, if there is at least one seed present in the component, we find an approximate minimum cut separating the maternal and paternal seeds using a greedy algorithm. If there are only, e.g., maternal seeds present and no negative weights (from imputed negative triangulations), then the entire component will be classified as maternal.

Kits that are classified as either maternal or paternal at a particular node are considered recursively in the maternal or paternal branches of that mode.

Inferred negative triangulations

Suppose triangulations and pairwise matches are available for a kit S. And suppose there are kits T1 and T2 that each match pairwise with kit S on a particular segment, but fail to triangulate with S on that segment. Then we have a negative triangulation for source S between T1 and T2, indicating that T1 and T2 likely belong to different branches of the tree. This is represented with a negative weight between T1 and T2 in the graph used for clustering.

We find all negative triangulations for kits S whose triangulations and pairwise matches are available. This is somewhat computationally expensive, because the segments where negative triangulations occur are generally sub-segments of those appearing in the data files.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kgenealogic-0.2.0.tar.gz (319.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kgenealogic-0.2.0-py3-none-any.whl (318.9 kB view details)

Uploaded Python 3

File details

Details for the file kgenealogic-0.2.0.tar.gz.

File metadata

  • Download URL: kgenealogic-0.2.0.tar.gz
  • Upload date:
  • Size: 319.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.10.10 Linux/5.19.0-50-generic

File hashes

Hashes for kgenealogic-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f6aac0833c856ae8b4b2fc520527cc0fecc52c647f461875b05da1ff3025ff7c
MD5 978314378fc2702dcf5ff51710febf52
BLAKE2b-256 6b524869f2d46edc8a0f97ad0685b74fcdba3d7cda2720cf87e1f51c4679105d

See more details on using hashes here.

File details

Details for the file kgenealogic-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: kgenealogic-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 318.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.10.10 Linux/5.19.0-50-generic

File hashes

Hashes for kgenealogic-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5c9617fe56b590713ac3b30242d7266f0a5748a72285784bb8253cb0b0949a57
MD5 8cc890c31ae2fa4e599e1f25537774ae
BLAKE2b-256 794f63edd94d36dcfdd2c2d98b124d4016a9bf28b31db5b6382a530b536c56e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page