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.80.tar.gz (12.2 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.80-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: plinkformatter-0.1.80.tar.gz
  • Upload date:
  • Size: 12.2 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.80.tar.gz
Algorithm Hash digest
SHA256 b44b8d4c82d30c1d398bb0488df48c0563f8635a1db2836969f3904865e6643a
MD5 4e44fd092378944685850306fb0593f6
BLAKE2b-256 87e19f15dbcae84c4ac0622a4a782f7ce7624d9aa22b71340cba17cbba6fd38a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plinkformatter-0.1.80-py3-none-any.whl
  • Upload date:
  • Size: 13.8 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.80-py3-none-any.whl
Algorithm Hash digest
SHA256 609e927bb57cc61cb3cd63564c78ab5856562004e04b886f852310718c80ab36
MD5 512586e83d492e4928fdd45b4827425c
BLAKE2b-256 251418687213231e9ece7d1a07c94a4547ad6b6cd967107eb8ddc1920a6b5393

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