Skip to content

v0.2.0 - Multi-trait Support & Usability Improvements

Choose a tag to compare

@jschnable jschnable released this 15 Feb 22:13
· 49 commits to master since this release

New Features

Multi-trait Phenotype Support

  • Analyze multiple traits in a single PANICLE call - pass a phenotype file with ID + multiple trait columns
  • Results are organized by trait: results['Trait1']['GLM'], results['Trait2']['MLM'], etc.
  • Single-trait usage remains fully backward compatible

Automatic Sample Alignment

  • PANICLE now automatically matches sample IDs between phenotype and genotype files
  • Samples present in only one file are excluded with clear reporting
  • Per-trait exclusion of individuals with missing or non-finite phenotype/covariate values

Convenience Methods

  • AssociationResults.manhattan_plot() and .qq_plot() methods for quick visualization directly from results

Improved Data Loading

  • Genotype file paths now work directly in PANICLE() (VCF, PLINK .bed, HapMap)
  • Loader functions (load_genotype_vcf, load_phenotype_file, etc.) re-exported from top-level panicle namespace
  • Case-insensitive and whitespace-tolerant format/trait name matching

Bug Fixes

  • Fix unsafe float equality comparisons in LD pruning (BLINK/FarmCPU)
  • Suppress spurious floating-point warnings on Apple Silicon (arm64)
  • Fix Python 3.9 compatibility (union type syntax)
  • Fix mutable default argument in PANICLE() method parameter

Improvements

  • Replace print() statements with Python logging module throughout
  • Vectorized IBS kinship computation (faster than nested loops)
  • Default methods changed to GLM, MLM, FarmCPU (removed BLINK from defaults)
  • Better error messages when traits are not found (shows available columns)
  • Added CITATION.cff for easy citation via GitHub

Documentation

  • Added Python API quickstart with examples in README
  • Added CLI usage section with options table
  • Fixed docstring/code mismatches