Changelog
Source:NEWS.md
Changes in version 1.0.0 released on 20 Jan 2026
New Features
-
Family Assignment and Summary:
-
tidyped()now automatically assigns and includes aFamilycolumn, identifying full-sib groups. -
summary.tidyped()has been updated to provide family statistics (count, sizes, top largest families) and richer offspring analysis.
-
-
Pedigree Splitting (
splitped): Addedsplitped()function to detect and split disconnected pedigree components. It efficiently identifies independent sub-populations (connected components) using graph theory, excludes isolated individuals, and returns a list of re-indexedtidypedobjects ready for separate analysis or visualization. -
Comprehensive Matrix Support:
pedmatrix()now fully supports 6 types of genetic relationship matrices: Additive (A, Ainv), Dominance (D, Dinv), and Additive-by-Additive Epistatic (AA, AAinv). -
Relationship Matrix Visualization (
vismat): Addedvismat()function for visualizing relationship matrices (A, D, AA, etc.) with heatmaps and histograms. It supportspedmatrixobjects,tidypedobjects (auto-calculates A matrix), and standard matrices. Heatmaps can be annotated with family groups when a pedigree is provided.
CRAN Submission & Internal Improvements
This release marks the first stable version 1.0.0, polished for CRAN.
-
Portable Compilation: Standardized
src/Makevarsfor cross-platform compatibility (removed GNU/platform-specific extensions). -
Dependencies: Moved
RcppArmadillotoLinkingToto optimize package structure. -
Documentation & S3: Fixed
vignettegeneration, resolveddiagS3 method dispatch, and cleaned up documentation for CRAN compliance.
Changes in version 0.7.3 released on 13 Jan 2026
New behavior (BREAKING)
-
Simplified
pedmatrix()return and single-method enforcement:pedmatrix()now requires a singlemethodargument (e.g.,method = "A").When a single method is requested, the function returns the corresponding matrix or vector directly (not a named list). Requesting multiple methods in one call will now raise an error. Use repeated calls for multiple outputs.
New features
-
High-Performance Genetic Relationship Calculations: Introduced
pedmatrix()function implemented in Rcpp for efficient computation of:- Additive relationship matrix (A) using the tabular recursive algorithm.
- Sparse inverse additive matrix (A-Inverse) using Henderson’s rules.
- Dominance matrix (D) using the tabular approach.
- Inbreeding coefficients (f) using the Meuwissen & Luo (1992) path-tracing algorithm.
Improvements
-
Default Inbreeding Calculation Method: The
inbreed()function now uses the native Rcpp implementation by default, moving thenadivpackage toSuggests. - Documentation and Website: Updated package documentation and vignettes to reflect new features and improvements. The official package website is available at https://luansheng.github.io/visPedigree/.
Changes in version 0.7.2 released on 12 Jan 2026
New features
-
Flexible Generation Assignment: Added
genmethodparameter totidyped(). Users can now choose between"top"(top-aligned, default) and"bottom"(bottom-aligned) methods for generation inference.- The
"top"method aligns founders at Generation 1, which is more appropriate for biological pedigrees and prevents “founder drift” in pedigrees with varying depths. - The
"bottom"method aligns terminal nodes at the bottom, useful for visualizing introductions of unrelated exogenous parents.
- The
Improvements
-
Default Logic Change: Switched the default generation assignment method to
"top"(top-down) for more intuitive biological visualization. - Pkgdown Documentation: Generated and published the official package website at https://luansheng.github.io/visPedigree/.
- Automated CI/CD: Added GitHub Actions workflow for automatic documentation updates and deployment via GitHub Pages.
Changes in version 0.7.1 released on 11 Jan 2026
CRAN release: 2026-01-21
Performance optimizations
-
Large Pedigree Performance: Optimized
vispedperformance for displaying large pedigrees through efficient attribute handling and vectorized rendering. Computation time for 100k+ individuals reduced significantly by avoiding redundantigraphattribute lookups. -
Vectorized Tracing: Refactored
trace_ped_candidatesintidypedto use vectorizedigraph::neighborhoodcalls, achieving ~150x speedup for large candidate lists (e.g., 37k candidates in a 178k individual pedigree traced in ~1.2s). -
Early Filtering: Implemented unified early filtering of isolated individuals (Gen 0) in
prepare_ped_graphto streamline downstream graph conversion and layout algorithms.
Improvements
- User Feedback: Standardized filtering notifications. The message “Note: Removed N isolated individuals…” now appears consistently for all pedigree sizes when Gen 0 individuals are present.
-
Refined Tracing: Corrected
trace = "all"logic in bothtidypedandvisped. It now correctly retrieves the union of ancestors and descendants (“up” + “down”) instead of the entire connected component (undirected search).
Changes in version 0.7.0 released on 10 Jan 2026
Breaking changes & Major Refactoring
-
Graph-based
tidypedCore: Reimplemented the pedigree tidying engine using formal graph theory principles (Directed Acyclic Graphs). Improved loop detection and generation inference accuracy using topological sorting. -
Modular Architecture: Split the monolithic
visped.Rinto functional modules:visped_layout.R,visped_graph.R,visped_style.R, andvisped_render.Rfor better maintainability.
New features
-
New Parameters in
visped():-
pagewidth: Allows users to specify the PDF page width (default 200 inches) to accommodate different pedigree scales. -
symbolsize: A scaling factor (default 1) to adjust node sizes relative to label dimensions, providing finer control over whitespace.
-
-
Two-Pass Rendering Engine: Introduced a two-pass strategy in
plot_ped_igraph()to ensure edges connect exactly at node centers, eliminating visual gaps in vector PDF outputs. -
Enhanced Highlighting: Added support for real-time ancestry and descendant highlighting via the
traceparameter invisped().
Bug fixes
- Fixed rendering failure in
outline = TRUEmode by correcting attribute indexing in the graph object. - modernized the unit testing suite to
testthat3rd edition, removing all legacycontext()warnings. - Improved coordinate calculation precision to prevent overlapping in high-density generations.
Changes in version 0.6.2 released on 01 Jan 2026
New features
- Added
summary()method fortidypedobjects to provide quick pedigree statistics (number of individuals, founders, sex distribution, etc.).
Changes in version 0.6.1 released on 30 Dec 2025
New features
- Implemented opaque highlighting effects for better visualization clarity.
- Added
traceoption tovisped()to control ancestry tracing direction.
Changes in version 0.6.0 released on 28 Dec 2025
New features
- Implemented strict S3 class structure for
tidypedobjects withnew_tidyped()constructor andvalidate_tidyped()validator to ensure data integrity.
Changes in version 0.5.0 released on 26 Dec 2025
New features
- Added
highlightparameter tovisped()function. Users can now highlight specific individuals using a character vector of IDs or a list for custom colors. - Added
showfparameter tovisped()function to display inbreeding coefficients on the pedigree graph. - Added
inbreedparameter totidyped()function to calculate inbreeding coefficients using thenadivpackage. - Refactored
inbreed()function as a standalone tool that operates ontidypedobjects. - Optimized
repeloverlap()function usingdata.tablefor significantly better performance.
Bug fixes
- Fixed a critical crash in
visped()when combiningcompact = TRUE,highlight, andshowf = TRUEby refactoringped2igraph()to delay label modification until after layout calculation. - Fixed documentation grammar and phrasing across all functions for CRAN compliance.
- Fixed
R CMD checknotes related todata.tablenon-standard evaluation by addingR/globals.R.
Changes in version 0.2.5 released on 25 Feb 2020
Bug fixes
- The tidyped() does not work with trace=‘all’ in certain cases