Skip to contents

phiper 0.4.14 (2026-10-06)

Reproducibility

phiper 0.4.13 (2026-10-06)

Dependencies

  • phiper now imports 13 packages instead of 20, and installing it pulls in 41 packages instead of 77 (#25). cli, tidyselect, scales, showtext and sysfonts are no longer needed. plotly and Rtsne moved to Suggests: install plotly to use the *_interactive() plots and the 3D t-SNE view, and Rtsne to use compute_tsne(). phiper now requires ggplot2 >= 4.0.0.

Plotting

  • Loading phiper no longer changes global settings: it does not set the default ggplot2 theme, the discrete colour options, or showtext font rendering. Plots still use the phiper colours, which theme_phip() now sets.
  • The bundled Montserrat font was removed and plots default to the "sans" font family.
  • Static plots now draw Δ, Σ and subscripts (e.g. in deltaplot() and volcano_static()) with plotmath, so they can be saved to PDF with the standard pdf() device.

phiper 0.4.12 (2026-10-06)

Documentation

  • The “Typical workflow” vignette has clearer code comments, notes that ggsignif is needed for significance brackets in alpha diversity plots, and shows how to save a phip_data object with export_parquet(). Written by Nikolas Basler.

phiper 0.4.11 (2026-10-05)

Documentation

  • The human proteome library article now documents the library’s metadata fields: general peptide and source-protein information, taxonomic information, and the is_* annotation flags (proteome, mitochondrial, HLA, HLA eplet, control, neoantigen, cryptic peptide, transposable element ORF and therapeutic antibody sources). Written by Nicolai Hörstke.
  • The function reference on the website is now grouped by module (alpha diversity, beta diversity, POP analysis, delta analysis, plot styling and example data).

Continuous integration

  • pkgcheck passes again under pkgcheck 0.2.0.44. The workflow now waits for the latest R-CMD-check and test-coverage push runs to finish before running pkgcheck, which previously sampled them mid-run and reported a failing CI. Push-triggered pkgcheck runs on different branches no longer cancel each other. Alon Alexander is now listed as copyright holder only, as pkgcheck requires an ORCID for every contributor.

phiper 0.4.10 (2026-10-05)

Continuous integration

  • New phipflow-compat workflow runs the end-to-end smoke test of the phipflow Nextflow pipeline with the phiper version under test, on every pull request and push to main that touches the package. Changes that break phipflow now fail before they are merged.

phiper 0.4.9 (2026-10-05)

Bug fixes

  • compute_alpha() no longer corrupts phiperio’s peptide-library cache. It attached the cache’s DuckDB file to the data connection in read-write mode, so when get_peptide_library() later wrote another library to the cache in the same R session, that table became unreadable (“INTERNAL Error: invalid fsst_symbol_table_offset”). This broke the human proteome vignette in R CMD check on Linux and macOS. The cache is now attached read-only. An already corrupted cache is rebuilt with phiperio::get_peptide_library(..., force_refresh = TRUE), or by deleting phip_cache.duckdb from tools::R_user_dir("phiperio", "cache").

phiper 0.4.8 (2026-10-05)

Documentation

  • The “Peptide library” navbar item is now a dropdown with one article per library. The existing article now covers the Agilent, Twist and Corona2 library, and two articles are new: the ICAM library, documenting its general, taxonomic, annotation-flag and fused-protein fields (written by Gabriel Innocenti), and the human proteome library (curated by Nicolai Hörstke), whose field documentation is coming soon.

phiper 0.4.7 (2026-10-05)

Bug fixes

  • When no peptide library is supplied, scatter_interactive(), the color_by highlighting of the scatter and volcano plots, and compute_delta() now fetch the phiperio libraries the peptide IDs belong to, detected from their prefixes with phiperio::detect_peptide_libraries(). They previously always fell back to the combined Agilent, Twist and Corona2 library, so human proteome and ICAM peptides got no hover metadata and could not be highlighted or grouped by taxonomy. Peptides that match no known library get no library: plots leave every point uncoloured, and compute_delta() asks for peptide_library instead of reporting missing columns. Requires phiperio 0.6.1.

phiper 0.4.6 (2026-10-05)

Peptide libraries

  • Added two peptide libraries to library-metadata/, next to the combined Agilent, Twist and Corona2 library: the human proteome library (human_proteome_library_16.09.26.rds, 300,000 humanProteome_* peptides) and the ICAM library (icam_library_01.10.26.rds, 420,000 icam_* peptides). phiperio’s get_peptide_library() serves them as "human_proteome" and "icam". Both omit the full protein sequence (full_aa_seq), which kept the files above GitHub’s 100 MB limit; the curation scripts are in phiperio’s data-raw/.

phiper 0.4.5 (2026-09-09)

Bug fixes

  • compute_delta() no longer ignores paired_by in the strict hits guard (#56). The guard rejected duplicate positives per subject_id even when a different pairing column was supplied, so a subject contributing two samples to the same group aborted the call although the pairing unit was unique within that group. The guard now keys on paired_by when given, and its error message names the column it actually checked.

phiper 0.4.4 (2026-09-08)

New features

  • compute_delta() gains a min_m_eff argument (#54). Strata whose effective number of peptides (m_eff) falls below the threshold are skipped before any permutation is drawn and are dropped from the returned tibble, since the permutation test is only reliable for m_eff > 5. Defaults to 0, which preserves the previous behaviour of testing every stratum.

phiper 0.4.3 (2026-07-14)

New vignette

  • Added “Peptide Library Metadata” vignette documenting the Agilent, Twist, and Corona2 peptide library metadata columns (documentation by Gabriel Innocenti, based on prior annotation work by Sasha Zhernakova and Carlos Reyna-Blanco).

Documentation

  • pkgdown navbar and Articles page now include a dedicated “Peptide library” entry.

phiper 0.4.2 (2026-07-06)

New vignette

  • Added “Tutorial: Typical phiper workflow” vignette by Nikolas Basler, covering a full cross-sectional analysis (alpha/beta diversity, POP, DELTA) with a bundled dummy dataset (inst/extdata/typical-workflow/).

Data

  • Bundled tutorial dummy dataset (40 enrichment CSVs + metadata) under inst/extdata/typical-workflow/.
  • Updated peptide library to combined_library_06.07.26.rds with protein_id merged in from peptide_to_protein_map.csv.

Contributors

  • Added Nikolas Basler as contributor.

Documentation

  • pkgdown articles section now groups vignettes into “Get started” (tutorial) and “Module vignettes”.
  • README links directly to the tutorial vignette.

phiper 0.4.1 (2026-04-15)

Bug fixes

Vignettes

  • New vignettes: beta diversity, delta plots, and POP plots.
  • Added calibration vignette to .Rbuildignore.

Plotting

  • Exported beta diversity plot functions.

Documentation

  • Updated README.

CI

  • Updated pkgcheck workflow to mirror phiperio behaviour.

phiper 0.4.0

New functions

  • compute_pop() replaces the old ph_prevalence_compare(). Computes per-feature prevalence comparisons (Fisher / McNemar tests) across group pairs. Unused arguments were removed, internal filtering now delegates to the shared .ph_filter_pairs() helper, and imports were trimmed.
  • scatter_static() — static ggplot2 prevalence scatter (percent1 vs percent2) with BH-corrected significance colouring and optional color_by highlighting.
  • volcano_static() — static ggplot2 volcano (log2 ratio vs −log10 p) with configurable fold-change and p-value cutoffs and raw / BH p-value modes.
  • volcano_interactive() — plotly equivalent of volcano_static().

Changes to scatter_interactive()

  • Fixed a hover-text bug that caused incorrect peptide labels to appear in some multi-rank datasets.
  • Updated peptide-library joining to follow the phiperio conventions used elsewhere in the package.
  • Removed arguments that were no longer used after the peptide-library refactor.

Plotting

  • All plots now use theme_phip() as their base theme and the phiper discrete colour / fill scales, ensuring a consistent visual style across the package.
  • phip_use_montserrat() has been removed. Font registration is handled automatically in .onLoad().

Examples and documentation

Tests

  • New test-pop_plots.R covering scatter_static(), scatter_interactive(), volcano_static(), and volcano_interactive() (return types, pair / rank filtering, BH colouring, color_by interface, background overlay, and the internal .build_color_group() helper).
  • Removed the two phip_use_montserrat() tests from test-plot_utils.R for the function that was deleted.
  • Updated vdiffr reference snapshots for deltaplot, forestplot, and ecdf_plot to reflect the new theme_phip() styling.

R CMD CHECK

Vignettes

  • Removed the pre-built .html vignette that was accidentally committed to the repository.

phiper 0.3.4

Changes to compute_delta()

  • New perm_method = "mid_p" option: computes the mid-p corrected permutation p-value, which halves the contribution of ties (), reducing the conservative bias of the standard test for discrete statistics. perm_method now defaults to "mid_p" (previously "standard").
  • New aggregate_stat = "af" option: implements an adaptive Fisher aggregation statistic. Per-peptide z-scores are converted to one-sided p-values, sorted, and the optimal truncation point is selected by maximising a harmonic-mean-weighted cumulative sum. Positive and negative tails are aggregated separately and the dominant direction is returned.

phiper 0.3.3

Tests

phiper 0.3.2

New functions

  • compute_alpha_significance(): runs global (Kruskal-Wallis or one-way ANOVA) and pairwise (Wilcoxon or Tukey HSD) hypothesis tests on every (rank, metric) combination returned by compute_alpha(). Returns a "phip_alpha_significance" list with $global (statistic, p-value, test) and $pairwise (p_raw, p_adj, Cohen’s d, significance stars) tibbles. Supports p_adjust_method (default "BH") and subsetting via metric / rank arguments. Group column is inferred automatically when not supplied.
  • plot_alpha_significance(): visualises pairwise results either as a filtered tibble (type = "table") or a symmetric Cohen’s d heatmap with significance stars (type = "heatmap"). Accepts metric, rank, and p_threshold arguments to focus on a single comparison.

Changes to plot_alpha() and plot_alpha_interactive()

  • metric now also accepts "pielou_evenness" and "berger_parker_dominance", matching all five indices added to compute_alpha() in 0.3.1.
  • New significance-bracket parameters: significance, show_significance, sig_p_threshold, sig_step_increase, sig_tip_length. Pass a "phip_alpha_significance" object and set show_significance = TRUE to overlay pairwise brackets via ggsignif (optional dependency). Non-significant pairs are automatically omitted.
  • Added ... (reserved; ignored) for forward-compatibility.

Font bundling

  • Montserrat Regular, Bold, and Italic TTF files are now shipped in inst/fonts/, so phip_use_montserrat() works offline without a Google Fonts connection.
  • phip_use_montserrat() tries the local bundle first; falls back to sysfonts::font_add_google() only when the local files are absent.
  • Package registers the font at load time via .onLoad() (showtext rendering remains opt-in; call phip_use_montserrat() explicitly to enable it).

Tests

  • New test-alpha_significance.R: 56 tests covering compute_alpha_significance() (global/pairwise tests, p-adjustment, Cohen’s d, metric/rank subsetting, group inference, single-group edge case) and plot_alpha_significance() (table and heatmap modes, error paths). Line coverage: 89.91% → 99.54%.
  • New test-alpha_plots.R: 63 tests covering all five metrics (static and interactive), faceting, group/rank filtering, custom colours, y-range, x-ordering, factor group columns, significance brackets, and plot_enrichment_counts(). Line coverage: 14.88% → 94.57%.

Documentation

Dependencies

  • Added ggsignif and rmarkdown to Suggests.
  • Added VignetteBuilder: knitr.

phiper 0.3.1

Changes to compute_alpha

  • Added pielou_evenness and berger_parker_dominance to the output (NA for samples with richness ≤ 1 and richness = 0 respectively).
  • New metrics parameter: request any subset of the five indices; defaults to all five.
  • New mode parameter ("binary", "threshold", "abundance") replaces fc_threshold. "abundance" mode uses raw values from abundance_col with optional abundance_agg ("mean", "sum", "max") at higher ranks.
  • shannon_log renamed to shannon_base; old name still works with a deprecation warning.
  • Performance: all-samples roster now collected once before the rank loop instead of re-queried per rank.
  • Hardening: all-invalid ranks now aborts with an informative error instead of silently returning empty output; n_samples attribute added to the result.
  • Validation: mode = "threshold" now requires threshold to be finite and abundance_col (when supplied) to be a character scalar.

phiper 0.3.0

Major changes

  • Extracted all data-import, class construction, and low-level utility code into the new phiperio package. phiper now declares phiperio as a hard dependency and re-exports its user-facing functions (load_example_data, get_example_path) so existing workflows require no changes.
  • Removed all functions that moved to phiperio: phip_convert, phip_convert_legacy, new_phip_data, expand_phip_data, phip_data_join, validate_phip_data, disconnect, get_comparisons, phip_example_path, phip_load_example_data, and the full logging / validation helper suite (add_quotes, word_list, .chk_*).
  • Internal logging and validation now use the unified phiperio helpers (.ph_abort, .ph_warn, .ph_log_info, .ph_with_timing, .ph_check_cond, .ph_add_quotes, .ph_word_list, .ph_check_path, .ph_check_extension, .ph_check_null_default).
  • get_peptide_meta() renamed to get_peptide_library() throughout, in line with the phiperio API.
  • compute_alpha: restored efficient same-connection peptide library handling via .ph_peplib_on_main() (DuckDB ATTACH fast path with copy_to() fallback).

Internal

  • R source files renamed to follow the new <domain>_compute / <domain>_plots convention: binary_alpha → alpha_compute, binary_alpha_plots → alpha_plots, binary_beta → beta_compute, binary_beta_plots → beta_plots, prevalence-DELTA_test → delta_compute, prevalence-DELTA_plots → delta_plots, prevalence-POP-test → pop_compute, prevalence-POP_plots → pop_plots, plot-utils → plot_utils. Test files renamed accordingly.
  • Naming conventions for source files and functions documented in CONTRIBUTING.md: exported functions use plain snake_case; all internal helpers use the .ph_ prefix.

phiper 0.2.7

  • compute_delta: added maxmean (Efron-type) as a test statistic option.
  • compute_delta: added prevalence bins for the test statistic computation.
  • compute_delta: srlr is now the default test statistic.
  • Implemented McNemar test and paired signed root likelihood ratio statistic for paired designs.
  • Welford’s online algorithm refactored into its own class; added a wrapper for post-permutation output generation.
  • Docs and R CMD CHECK fixes.

phiper 0.2.6

  • compute_delta: added stat_mode options “score” (pooled score z) and “srlr” (signed root likelihood ratio) using raw counts.
  • compute_delta: removed smoothing, prevalence filtering, BH adjustment, and fold_change/cross_prev summaries; outputs now include T_null_mean and T_null_sd and standardized T_obs uses the null mean and sample SD.
  • shift_computing: null variance uses Welford’s algorithm with sample variance in permutation loops.
  • prevalence-DELTA plots/tests updated to drop BH/categorical dependencies and use numeric-only filtering where applicable.

phiper 0.2.5

  • Removed 10 unused package dependencies (data.table, fs, htmltools, purrr, forcats, filelock, arrow from suggests)
  • Moved duckdb and dbplyr to imports; moved knitr to suggests for proper dependency management
  • Removed 360 lines of unused CAP/dispersion plotting functions and associated documentation

phiper 0.2.4

  • Updated the peptide library with the new annotations from Sasha
  • in the compute_distance –> fallback to collecting before pivoting

phiper 0.2.3

  • Added small_mixture to phip_load_example_data
  • Changed all examples and tests to use this small_mixture instead of redining it
  • Added cache to phip_load_example_data to make tests/examples faster

phiper 0.2.2

  • Separated the feature associations to PCoA vectors from compute_pcoa to a separate function.

phiper 0.2.1

Minor changes

  • Removed superassignments, changed all assignments to “<-” style
  • Stated all dependencies, removed unstated dependencies

Bug fixes

  • Fixed typos in the examples from binary_beta.R
  • fixed R CMD check (0 errors, 0 warnings, 0 notes)

Documentation

  • Documented empty params, got rid of all documentation-related wearnings,
  • removed all non-ASCII chars
  • Added CONTRIBUTING.md to .Rbuildignore (it caused a note in R CMD CHECK),

phiper 0.2.0

Minor changes

  • Removed generic and S3 methods for the expand_phip_data
  • Renamed the internal helpers involved in the data import to match the naming convention .ph_
  • documented the internal helpers involved in the data import stage

Major changes

  • Removed the backend argument entirely from the phip_convert, phip_convert_legacy, new_phip_data, .resolve_paths and other, less imporatant helpers. DuckDB is now the only supported backend
  • Changed the structure of the repo. Now all functions related to the standard/legacy import workflows live in the standard-conver.R or legacy-convert.R
  • removed the resolve-paths.R file. Moved the functions to utils.R

phiper 0.1.1

Minor changes

  • Removed old, dead and undocumented code: R/binary-analysis_peptides.R, R/vinary-analysis_stability.R, R/binary-analysis_stability_cattime.R, R/fold_change-analysis.R

  • i left other files, even if they were undocumented/untested, as they were essential for phiper to work (e.g. the data import paths)

phiper 0.1.1

Minor changes

  • Removed old, dead and undocumented code: R/binary-analysis_peptides.R, R/vinary-analysis_stability.R, R/binary-analysis_stability_cattime.R, R/fold_change-analysis.R

  • i left other files, even if they were undocumented/untested, as they were essential for phiper to work (e.g. the data import paths)

Documentation

  • Regenerated the docs, removed the old functions from NAMESPACE

phiper 0.1.0

Minor changes

  • None.

Major changes

  • None.

Features

  • None.

Bug fixes

  • None.

Documentation

  • None.

Internal

  • None.