Skip to main content

Hardy-Weinberg Equilibrium Calculator. Calculates the expected genotype frequencies based on the allele frequencies of a population in Hardy-Weinberg equilibrium.

Project description

Build test and deploy to package repository


Hardy Weinberg Equilibrium

Hardy-Weinberg Equilibrium Calculator. Calculates the expected genotype frequencies based on the allele frequencies of a population in Hardy-Weinberg equilibrium.

Installation

pip install hardyweinbergcalculator

Usage

usage: hwc [-h] [--version] [--verbose] [--debug] [--samples SAMPLES] [--p P] [--q Q] [--tpop TPOP] [--ppop PPOP] [--qpop QPOP] [--pq2pop PQ2POP] [--genes GENES [GENES ...]] [--json JSON [JSON ...]]

Hardy-Weinberg Equilibrium Calculator. Calculates the expected genotype frequencies based on the allele frequencies of a population in Hardy-Weinberg equilibrium. See: https://en.wikipedia.org/wiki/Hardy%E2%80%93Weinberg_principle


optional arguments:
  -h, --help         show this help message and exit
  --version          show program's version number and exit
  --verbose          Enable verbose logging. (default: False)
  --debug            Enable debug logging. (default: False)
  --samples SAMPLES  Number of samples to generate, if using random data generator. (default: None)
  --p P              Frequency of dominant allele. (default: None)
  --q Q              Frequency of recessive allele. (default: None)
  --tpop TPOP        Total population. (default: None)
  --ppop PPOP        Original population of dominant allele. (default: None)
  --qpop QPOP        Original population of recessive allele. (default: None)
  --pq2pop PQ2POP    Original population of heterozygous allele. (default: None)

Example: python3 -m hwc --ppop 10 --qpop 10 --pq2pop 200 --verbose

Generate random data

python3 -m hwc --samples 1000 --verbose

Calculate from known data

python3 -m hwc --ppop 10 --qpop 10 --pq2pop 200 --verbose

In your code

Test for Hard-Weinberg Equilibrium from generated data

from hwc import generate_population, HardyWeinberg

# Generate random data
population = generate_population(n=1000)
res = HardyWeinberg(genes=population)
print(res)

Test for Hardy-Weinberg Equilibrium from known data

from hwc import HardyWeinberg

# Known data
res = HardyWeinberg(
            homozygous_dominant_population=20,
            homozygous_recessive_population=44,
            heterozygous_population=95
            )
print(res)

Results Data Object

The results returned from the Hardyweinberg test will ultimately look like this, in json format:

{
    "2*pq": 0.375,
    "@genes": [],
    "chi_square_test": 1.1111111111111112,
    "expected_heterozygous_population": 3.75,
    "expected_homozygous_dominant_population": 5.625,
    "expected_homozygous_recessive_population": 0.625,
    "heterozygous_population": 5,
    "homozygous_dominant_population": 5,
    "homozygous_recessive_population": 0,
    "p": 0.75,
    "p + q": 1.0,
    "p**2": 0.5625,
    "p**2 + 2*pq + q**2": 1.0,
    "q": 0.25,
    "q**2": 0.0625,
    "total_population": 10
}

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

hardyweinbergcalculator-0.3.0.post20230614.zip (22.0 kB view hashes)

Uploaded Source

Built Distribution

Supported by

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