Skip to main content

No project description provided

Project description

PLINKFORMATTER

plinkformatter transforms genotype and phenotype inputs into PLINK-compatible artifacts for downstream linear mixed-model workflows (primarily PyLMM).

This repository is based on the original R workflow implemented in:

  • plinkformatter/IGNORE_misc/pyLMM_utils.R
  • tests/IGNORE_MISC/hao_v2/pyLMM_analysis_NonDO.R

The Python implementation keeps the same core workflow while improving maintainability, testability, and performance for large PED/MAP datasets.

Prerequisites

  • Python 3.8+
  • Poetry
  • PLINK 2.0 (required for PLINK integration tests and full pipeline runs)

Install dependencies:

poetry install

If plink2 is not on your PATH, set PLINK2_PATH explicitly.

PowerShell example:

$env:PLINK2_PATH = "C:\path\to\plink2.exe"

Running Tests

Run all commands from the repository root.

1) Fast test pass (no external PLINK dependency)

poetry run pytest -q tests/test_generate_pheno_plink_fast.py

2) PLINK utility tests

These include PLINK-facing behavior and may require a working plink2 binary.

poetry run pytest -q tests/test_plink_utils.py

3) Full test suite

poetry run pytest -q tests

Test output flags

  • -q: quiet output (compact summary)
  • -s: show stdout/stderr (print, logs written to console)

Example:

poetry run pytest -s -q tests/test_generate_pheno_plink_fast.py

Workflow Parity with R

The Python pipeline mirrors the same logical stages as the R scripts:

  1. Extract/normalize phenotype rows for selected measure IDs.
  2. Generate per-measure, sex-specific .ped/.map/.pheno files.
  3. Build .bed/.bim/.fam with PLINK.
  4. Align .pheno ordering to .fam and recompute rank-Z on retained samples.
  5. Compute kinship (PyLMM3 or PLINK-based path).

Performance Design (Large PED Files)

A major difference from older dataframe-heavy patterns is how PED is handled in generate_pheno_plink_fast.py:

  • It does not load the full PED into a pandas DataFrame.
  • It builds a compact byte-offset index (strain -> file position) once.
  • It seeks directly to needed PED rows and writes outputs in a streaming manner.

This avoids high memory usage and scales better for large genotype files than pandas.read_csv() on full PED content.

Publishing to PyPI

  1. Update version:
poetry version patch
  1. Build:
poetry build
  1. Configure repository and token:
poetry config repositories.pypi https://upload.pypi.org/legacy/
poetry config pypi-token.pypi pypi-YourActualTokenHere
  1. Publish:
poetry publish

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

plinkformatter-0.1.83.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

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

plinkformatter-0.1.83-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file plinkformatter-0.1.83.tar.gz.

File metadata

  • Download URL: plinkformatter-0.1.83.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.9.13 Windows/10

File hashes

Hashes for plinkformatter-0.1.83.tar.gz
Algorithm Hash digest
SHA256 df613d69f4292760c4a3f376d9427b8338db38c7e11facf7df8abc055052af1d
MD5 94a2d1c0752d22bba2183bf9ec446dc4
BLAKE2b-256 5cf422dd8ed8d9d94b6860d6fb2f6b1926f4125648832c82b0d8e6320db1a74b

See more details on using hashes here.

File details

Details for the file plinkformatter-0.1.83-py3-none-any.whl.

File metadata

  • Download URL: plinkformatter-0.1.83-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.9.13 Windows/10

File hashes

Hashes for plinkformatter-0.1.83-py3-none-any.whl
Algorithm Hash digest
SHA256 a32ced203155d5c101e283af77fdc904f0cab2b3eff3800a266a2e357a80e8af
MD5 0c50e05800518c355b1e65029e55075b
BLAKE2b-256 232c0b0c212a16d5cf5364dd2933088b940727fe992a3c027af56791f64c48e5

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