Vogl-Lab-Research/phipflow.scatter_static(), scatter_interactive() and plot_alpha_interactive()
used to call set.seed(1) internally, which overwrote any seed the user
had set. Jitter now follows the user's set.seed() and leaves the global
random state unchanged, the same as deltaplot() and
deltaplot_interactive(). Without a seed, jitter differs between sessions.scatter_interactive() still uses
background_seed, but no longer changes the global random state.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.theme_phip() now
sets."sans"
font family.deltaplot() and
volcano_static()) with plotmath, so they can be saved to PDF with the
standard pdf() device.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.is_* annotation flags (proteome, mitochondrial, HLA,
HLA eplet, control, neoantigen, cryptic peptide, transposable element ORF
and therapeutic antibody sources). Written by Nicolai Hörstke.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.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.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").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.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/.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.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.inst/extdata/typical-workflow/).inst/extdata/typical-workflow/.combined_library_06.07.26.rds with protein_id merged in from peptide_to_protein_map.csv.n_peptides bug in compute_pop()..Rbuildignore.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().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 blocks to scatter_static(),
volcano_static(), and volcano_interactive().deltaplot(), deltaplot_interactive(), ecdf_plot(),
and ecdf_plot_interactive(): the old examples called ph_prevalence_compare()
which no longer exists; they now use a minimal inline data.frame and require
no external data.scatter_static() and scatter_interactive()
that still referenced ph_prevalence_compare().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).phip_use_montserrat() tests from test-plot_utils.R for
the function that was deleted.deltaplot, forestplot, and
ecdf_plot to reflect the new theme_phip() styling.delta_ratio, n01, and n10 to utils::globalVariables() in
zzz.R to silence the "no visible binding" notes from compute_pop()..html vignette that was accidentally committed to
the repository.perm_method = "mid_p" option: computes the mid-p corrected permutation
p-value, which halves the contribution of ties
(\eqn{p_{\mathrm{mid}} = (#{|T_b| > |T_{\mathrm{obs}}|} + 0.5 \cdot #{|T_b| = |T_{\mathrm{obs}}|}) / B}),
reducing the conservative bias of the standard test for discrete statistics.
perm_method now defaults to "mid_p" (previously "standard").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 \eqn{-\log p} sum. Positive and negative
tails are aggregated separately and the dominant direction is returned.test-beta_plots.R: tests for plot_pcoa(), plot_cap(), plot_scree(),
plot_dispersion(), and plot_tsne() (2-D and 3-D), covering basic output
type, grouping/time aesthetics, centroid and ellipse options, axis selection,
variance-explained labels, and input-validation errors.test-plot_utils.R: tests for colour helpers (phip_palette,
scale_colour_phip(), scale_fill_phip(), theme_phip(),
phip_use_montserrat()), internal colour utilities (.hex2rgb(),
.rgb2hex(), .mix_cols(), .tint(), .blend_hex(), .make_shades(),
.build_shaded_map()), and ordination helpers (.pick_axes(),
.axis_labels_with_pct(), .shaded_colors(), .make_point_fills(),
.first_subview_name()).test-shift_computing.R: tests for compute_delta() covering all
stat_mode options (diff, score, srlr, mcnemar, srlr_paired), all
weight_mode options, stratified bins (strat_bins), winsorisation, and
paired designs.test-zzz.R: tests for .onLoad() idempotency, load_example_data(),
and get_example_path().test-utils.R: tests for internal utilities including .ph_check_cond(),
.ph_check_extension(), .ph_check_null_default(), .ph_check_path(),
%nin%, %||%, .ph_opt(), .ph_now(), .ph_base_prefix(),
.ph_wrap(), .ph_compose_lines(), .ph_log_info(), .ph_log_ok(),
.ph_warn(), .ph_abort(), .ph_with_timing(), .ph_check_pd(), and
.ph_resolve_paths().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.metric now also accepts "pielou_evenness" and "berger_parker_dominance",
matching all five indices added to compute_alpha() in 0.3.1.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.... (reserved; ignored) for forward-compatibility.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..onLoad() (showtext rendering
remains opt-in; call phip_use_montserrat() explicitly to enable it).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%.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%.alpha-diversity demonstrating the full alpha diversity pipeline:
loading data, compute_alpha() (binary, threshold, and abundance modes),
plot_alpha(), compute_alpha_significance(),
plot_alpha_significance(), and significance brackets on box plots.ggsignif and rmarkdown to Suggests.VignetteBuilder: knitr.pielou_evenness and berger_parker_dominance to the output (NA for
samples with richness ≤ 1 and richness = 0 respectively).metrics parameter: request any subset of the five indices; defaults to
all five.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.n_samples attribute added to the result.mode = "threshold" now requires threshold to be finite and
abundance_col (when supplied) to be a character scalar.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.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_*)..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).<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.CONTRIBUTING.md: exported functions use plain snake_case; all internal
helpers use the .ph_ prefix.maxmean (Efron-type) as a test statistic option.srlr is now the default test statistic.small_mixture to phip_load_example_datasmall_mixture instead of redining itphip_load_example_data to make tests/examples fastercompute_pcoa to a separate function.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)
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)