← Back to all sparks
P

pathfindR

INFRA · APIS
Velocity0.0

Enrichment Analysis Utilizing Active Subnetworks

pathfindR dropped Java from its subnetwork search and rebuilt it in C++

bioinformaticspathway-enrichmentrcppdependency-reductionr-packagegene-expression
Current state
pathfindR runs active-subnetwork-oriented pathway enrichment on gene expression results. Version 3.0.0 re-implemented the greedy, simulated-annealing and genetic search algorithms in R and C++ through Rcpp, removing the Java dependency the package had carried since its early releases, and renamed three exported functions in the process. The two patches since have been consolidation: 3.0.1 fixed signed integer overflow in the new C++ hash function flagged by gcc-UBSAN and clang-UBSAN on CRAN, and 3.0.2 repaired tests after a companion data package changed a dataset structure.
Where it's heading
The dependency surface has been shrinking for two years and Java was the last heavy one. 2.4.0 removed magick, KEGGgraph and KEGGREST by moving KEGG visualization onto ggkegg; 2.7.0 pushed org.Hs.eg.db from Imports to Suggests under CRAN policy, with functions degrading to defaults when it is absent; 3.0.0 finished the job on the search engine itself. The corresponding cost is now visible in 3.0.1: owning the algorithms in C++ means owning their undefined-behaviour reports too.
Prediction
Expect the near-term releases to keep hardening the Rcpp search code against sanitizer findings and to verify GA parity with the legacy JAR, since 3.0.0 claimed numerically identical results only for the greedy and simulated-annealing methods.

Recent moves

  1. 1mo ago

    Test fixes after a companion data package changed a dataset

    Repairs tests broken by a structural change to example_active_snws in pathfindR.data 2.2.0. Test-suite maintenance against a sibling package, with no effect on analysis behaviour.

    View source ↗
  2. 1mo ago

    Undefined-behaviour fixes harden the new C++ search engine

    The first bill for owning the search algorithms in-house: CRAN's UBSAN builds flagged signed integer overflow in the Java-compatible string hash, now reworked to use defined unsigned-wrap arithmetic while preserving identical results. JavaRandom::nextInt and java_cap_for were hardened against the same class of problem, and a plotting fallback was fixed.

    View source ↗
  3. 1mo ago

    Active subnetwork search re-implemented in C++, Java dependency removed

    ⚡ SPARK

    The endpoint of a long dependency-shedding arc that had already removed magick, KEGGREST and KEGGgraph in 2.4.0. It also resets the public API, renaming three exported functions, which makes this the version boundary users have to cross deliberately.

    View source ↗
  4. 7mo ago

    Human annotation database moves from Imports to Suggests

    Moves org.Hs.eg.db to Suggests under new CRAN policy, with dependent functions reverting to default behaviour when it is absent. Another entry in the dependency-shedding thread, and one that changes install footprint and runtime behaviour for anyone who does not have the annotation package.

    View source ↗
  5. 7mo ago

    Graceful handling for gene-set URL failures

    Introduces safe_get_content so remote gene-set fetches fail gracefully rather than erroring out, and fixes a missing argument in get_gene_sets_list. Small, but it targets the part of the workflow most exposed to external outages.

    View source ↗
  6. 1y ago

    Kappa matrix fix for the igraph update

    A single upstream-compatibility fix for NA handling in kappa matrix generation that would have errored under the then-current igraph release. Routine maintenance in the long tail of dependency churn.

    View source ↗