Bioconductor Developer Survey 2026 Now Open!

Bioconductor has moved to GIT for contributed packages; the subversion logs are no longer active. The following are the git logs.

GIT Logs

This is a list of recent commits to git.bioconductor.org, the devel(development) branch of the Bioconductor GIT repository.

This list is also available as an RSS feed (devel branch), and RSS feed (release branch)

Package: BANDITS
Commit: 27f01ddc796362839b9d6a9eff5aac08c3ded10a
Author: Simone Tiberi <simone.tiberi@unibo.it>
Date: 2026-10-23 11:22:25 +0200
Commit message:

 Update
 
Package: BANDITS
Commit: 7ade58a3b6e67f641bf6f094118e2f949c96b943
Author: Simone Tiberi <simone.tiberi@unibo.it>
Date: 2026-10-23 11:19:44 +0200
Commit message:

 DRIMSeq dependency removed
 
Package: CAGEr
Commit: 2f5ca0db9d301d100543469a0b8536794c703252
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 17:58:43 +0900
Commit message:

 Release 2.19.1
 
Package: CAGEr
Commit: 776a2bebaecdc07005f596ed9273f721226150e8
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 17:57:19 +0900
Commit message:

 Roxygen refresh and fixes
 
Package: CAGEr
Commit: e8dc27577b035433133343a5f5fb2bde56bfdce0
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 15:36:21 +0900
Commit message:

 Add the vectorised approach to the BED12 blocks benchmark.

Benchmark f.vectorised(), the approach now used by exportToTrack(),
against the previous best one, f.mat.direct(), looped on all the
clusters of one sample: the results are identical, and the vectorised
approach is about 700x faster (2 ms instead of 1.2 s for 532 clusters).

The markdown output is re-rendered with the current package and tools,
so the date, the code fences, the 2021 timings and the printed example
clusters change as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: e57ff2681c88971b394d337705be1a6a4b31ffdd
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 15:36:21 +0900
Commit message:

 Speed up exportToTrack() when qLow and qUp are given.

Build the BED12 blocks of all clusters at once: compute the candidate
starts and ends of the up to three blocks of each cluster in matrices
with one column per cluster, create all the blocks with a single call to
IRanges(), and split them by cluster with relist() and
PartitioningByEnd().  This replaces a loop that built and concatenated
IRanges objects cluster by cluster, which took ~2.5 ms per cluster.

On exampleCAGEexp, exporting tag clusters with quantiles is 12-19x
faster and consensus clusters 10x faster, and the results, including
the BED12 files written by rtracklayer, are identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: 6e19960a52b5ec38c0ba22326bbb323f1f6f98b4
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 15:13:42 +0900
Commit message:

 Speed up paraclu() and the summary of clusters.

In .paraclu(), build each cluster as a numeric vector and combine them
with base::rbind() instead of one-row data frames combined with the S4
rbind() generic from BiocGenerics, whose dispatch was most of the cost
of the recursion.

In .ctss_summary_for_clusters(), find the dominant CTSS of all clusters
at once with vectorised list operations on decoded scores, instead of an
sapply() loop on the elements of an RleList.  Cluster scores are still
summed on the RleList, so that they stay bit-identical.  Stop with an
explicit error when a cluster does not overlap any CTSS, which used to
fail with "non-numeric argument to binary operator".

On exampleCAGEexp, paraclu() is 10-13x faster, distclu() ~3.7x and
aggregateTagClusters() ~2x, and their outputs are identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: b7a950559417b913b015c965c21ace4d3d9c5ae4
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-23 15:07:41 +0900
Commit message:

 Simplify
 
Package: CAGEr
Commit: 86c21f89320567ac4882bcc41dfcaf28cb8a9ac2
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 19:06:19 +0900
Commit message:

 Bump the version to 2.19.1.

The changes in consensus-cluster expression are backwards-incompatible,
so mark them with a patch-version bump, and update the Date field as was
done for the previous patch releases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: 5f9a14eb5e3b5737e82cf0df2ab30ee38de26ff5
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 18:42:40 +0900
Commit message:

 Announce the changes in consensus-cluster expression in NEWS.

Describe in the development-version section that tpmThreshold of
aggregateTagClusters() now only selects the tag clusters that define
consensus-cluster boundaries, that consensus-cluster expression is the
sum of the CTSSs passing filteredCTSSidx() when aggregateTagClusters()
is run, and that the hidden filters removed from aggregateTagClusters()
and CustomConsensusClusters() change expression values, outOfClusters,
and the number of consensus clusters.  Also announce the deprecation of
excludeSignalBelowThreshold.

Explain how that argument behaved: up to CAGEr 1.20 (Bioconductor 3.6),
TRUE summed in each sample the signal of the tag clusters passing
tpmThreshold, as announced in the 1.2.7 entry, whereas from CAGEr 1.22.0
(Bioconductor 3.7) it discarded the individual CTSSs below tpmThreshold
in every sample.  The switch to per-CTSS filtering came with commit
5447ae1 (2017-09-14), whose message does not mention it, and the 1.22.0
NEWS entry did not announce it.

This entry is kept in its own commit because the development-version
section of NEWS.md does not exist on the release branch: a backport of
the code changes needs its own NEWS entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: 23d5089ee7df81a5a8d789f1e45bb834a9c1bcf7
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 18:15:58 +0900
Commit message:

 Describe consensus-cluster expression in the vignette.

Explain that the tpmThreshold of aggregateTagClusters() only serves to
define the consensus clusters, and that their expression in each sample
is the sum of the CTSSs that they contain among those not flagged by
filterLowExpCTSS().

Also correct the column in which consensusClustersGR() returns the
total signal when no sample is given: it is `score`, not `tpm`, which
only exists when a sample is selected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: e9bb6f840b0b3c27087d9218887f1c1caeb229b3
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 18:12:54 +0900
Commit message:

 Correct the documentation of flagLowExpCTSS() to match its code.

flagLowExpCTSS() keeps (TRUE) the CTSSs whose signal is strictly above
the threshold in at least nrPassThreshold samples, nrPassThreshold
being capped at the number of samples, and flags (FALSE) the others.
The documentation said instead that CTSSs with a signal below the
threshold are flagged, while a signal equal to the threshold is flagged
too, and that CTSSs are flagged when their signal is below the
threshold in at least nrPassThreshold samples, which describes a
different filter: with the default nrPassThreshold = 1, only the CTSSs
that are at or below the threshold in all samples are flagged.

The behaviour of the function does not change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: 8c909d01d614aa89b7561f7052d27d90c5ec47d8
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 18:10:17 +0900
Commit message:

 Remove hidden CTSS filters from consensus-cluster expression.

aggregateTagClusters() used tpmThreshold not only to select the tag
clusters that define the consensus clusters, but also twice more to
filter the CTSSs contributing to their expression: when
excludeSignalBelowThreshold = TRUE (the default), only CTSSs with a
normalised signal above tpmThreshold in at least one sample were
counted, and .CCtoSE() then dropped the CTSSs whose normalised signal
summed over all samples was not above tpmThreshold.  The second filter
made the results depend on the number of samples, and could not be
disabled without also disabling the selection of tag clusters.  These
filters did not change cluster boundaries, but lowered expression
values, removed clusters in which no CTSS survived, and inflated
outOfClusters.  The documentation described excludeSignalBelowThreshold
as acting on tag clusters, not CTSSs.

The expression of a consensus cluster is now the sum of the CTSSs that
it contains among those flagged as passing in filteredCTSSidx() at the
time aggregateTagClusters() is run, a flag normally set by
filterLowExpCTSS() before tag clustering.  The stored score, the
normalized assay, and the nr_ctss and dominant_ctss columns are thus
computed from the same set of CTSSs.

excludeSignalBelowThreshold is deprecated: it is kept in the signature,
its value is ignored, and a warning is emitted when it is supplied.
The examples no longer pass it.

CustomConsensusClusters() also called .CCtoSE(), with its default
threshold of 1, so it silently dropped CTSSs with a summed normalised
signal of 1 or less, on top of its explicit threshold and
nrPassThreshold filter.  Removing the filter from .CCtoSE(), together
with its now unused tpmThreshold parameter, fixes this as well.

The data in exampleCAGEexp are not affected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: 86aac0cdc0db9186d450b8d2626f6260c1205717
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 17:43:59 +0900
Commit message:

 Add tests for consensus-cluster expression in aggregateTagClusters().

Add a testthat (edition 3) suite built on a small synthetic CAGEexp
object (three samples, a dozen CTSSs, and a padding CTSS that sets
library sizes so that TPM values are simple multiples of the counts).
Expected values are derived by hand from the definitions of consensus
clusters and written as arithmetic in the comments.

The tests check that a broad cluster made only of low CTSSs is kept,
that cluster expression is the sum of the CTSSs passing
filteredCTSSidx(), that expression in a sample does not depend on the
number of samples in the object, that cluster boundaries follow the
tag clusters with score >= tpmThreshold, that outOfClusters is
consistent with that, that excludeSignalBelowThreshold is deprecated
and ignored, and that CustomConsensusClusters() keeps clusters made of
low CTSSs while its threshold and nrPassThreshold arguments still work.

The CTSS filtering thresholds used in the tests do not fall on a count
or TPM value of the synthetic data, so that the results do not depend
on whether flagLowExpCTSS() compares signal strictly with the
threshold, a point on which its documentation and code disagree.
testthat 3.1.5 is required for expect_no_warning().

Most of these tests fail until the hidden CTSS filters applied after
consensus-cluster construction (the excludeSignalBelowThreshold filter
and the sum-over-samples filter in .CCtoSE()) are removed.  The tests
for cluster boundaries and for the explicit filters of
CustomConsensusClusters() already pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: CAGEr
Commit: cc000abd08f0a0e99c9642005f058334c483cd31
Author: Charles Plessy <charles.plessy@oist.jp>
Date: 2026-10-13 15:46:01 +0900
Commit message:

 Fix vignette build with recent S4Vectors.

The table() method for Rle objects in S4Vectors does not accept the
useNA argument anymore.  Decode the Rle before tabulating it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpectraStash
Commit: 4450091878a74b02d4becbbdbb67383c24172e1c
Author: Johannes Rainer <5506112+jorainer@users.noreply.github.com>
Date: 2026-10-23 10:09:02 +0200
Commit message:

 Merge pull request #18 from rformassspectrometry/jomain

feat: add support for MsBackendSql backends 
Package: SpectraStash
Commit: 060731c907f68820298fb7a110aa70bcfe93f737
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-23 10:08:33 +0200
Commit message:

 Address Gabriele's comments
 
Package: SpectraStash
Commit: f8fe9fecc9f5a5a7c699e695ad1238f760f6abba
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-23 08:33:53 +0200
Commit message:

 feat: add support for MsBackendSql backends

- Add alabaster and plain text stash format support for `MsBackendSql`
  backends (for certain supported database systems).
 
Package: prolfqua
Commit: 0726bc3c1001b999013bee2174ba3a46dd90edb9
Author: Christian Panse <cp@fgcz.ethz.ch>
Date: 2026-10-23 10:07:47 +0200
Commit message:

 version bump 0.99.3
 
Package: exploreSE
Commit: 9a4efa3f7afb15bdb6bf5ace5c8a2d45393118b8
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-23 09:43:44 +0200
Commit message:

 example contexts, readme and vignette updates
 
Package: exploreSE
Commit: 39a87c37ef012ac7ae76369c51f02715a26a6f6a
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-23 09:21:58 +0200
Commit message:

 adapted screenshots
 
Package: gDR
Commit: 6f7cbd639f5698196a4025f685f291c95faf67e5
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-23 01:58:11 +0200
Commit message:

 Merge pull request #71 from gdrplatform/GDR-3739

fix: keep the rendered report when only the publication step fails 
Package: gDR
Commit: b61c337e04a54c4f949837ab86f48edb9cc879b1
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-23 00:09:31 +0200
Commit message:

 Merge remote-tracking branch 'origin/main' into GDR-3739

# Conflicts:
#	DESCRIPTION
#	NEWS.md
 
Package: gDR
Commit: 2c458cee5c7c06f38e662f0747e9ef64a9314988
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-21 12:19:46 +0200
Commit message:

 chore: reword the NEWS entry with a known verb
 
Package: gDR
Commit: a2792fcb894a7813327d0f9bad2b9674287f3440
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 22:19:41 +0200
Commit message:

 chore: bump version to 1.11.13
 
Package: gDR
Commit: 253da393b8c56fac4221527849171243f194c8c8
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 22:19:41 +0200
Commit message:

 test: cover the clean-up after a failed publication step
 
Package: gDR
Commit: c6786945884c58d1aae944ab2401e96cba33a480
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 22:19:41 +0200
Commit message:

 fix: keep the rendered report when only the publication step fails
 
Package: AnnotatedBCGEData
Commit: 3f5c4dff869df3e210ecae89a24e1e25b81857d7
Author: Heidi <heidi.climber@gmail.com>
Date: 2026-10-22 15:58:40 -0600
Commit message:

 added author
 
Package: gDR
Commit: 982e514283a6df5395a41563032193b2151b959c
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-22 23:25:39 +0200
Commit message:

 Merge pull request #69 from gdrplatform/GDR-3703

feat: show how the numbers were produced in the processing reports 
Package: gDR
Commit: aa48d398fff08b54a1b575c41e2489a9d5d09b52
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-21 12:21:37 +0200
Commit message:

 Merge remote-tracking branch 'origin/main' into GDR-3703

# Conflicts:
#	DESCRIPTION
#	NEWS.md
 
Package: gDR
Commit: 6bd55b9887912fd562ac62a7ed88a1effdd6a214
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 12:14:39 +0200
Commit message:

 chore: bump version to 1.11.12 and update NEWS
 
Package: gDR
Commit: eb793f233bdb0bfdc3cdfbb4f4b08b2a0f3fd546
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 12:14:39 +0200
Commit message:

 feat: show the recorded fits and processing steps in the processing reports
 
Package: betterChromVAR
Commit: d64e3b5d0f52fa449c248be5e59010c8055da9ec
Author: Pierre-Luc <pl.germain@gmail.com>
Date: 2026-10-19 11:23:34 +0200
Commit message:

 Merge pull request #5 from plger/fpc

Merge FPC into main/devel 
Package: betterChromVAR
Commit: ffb24e2c6885a75c2ae2e90d5e3fd42cf8c7ed2f
Author: plger <pl.germain@gmail.com>
Date: 2026-10-18 18:28:21 +0200
Commit message:

 adjusted news
 
Package: betterChromVAR
Commit: 1e91f22c10776254154d64fbfca7a6dd6e812394
Author: Pierre-Luc <pl.germain@gmail.com>
Date: 2026-10-18 18:27:10 +0200
Commit message:

 Merge pull request #4 from koefoeden/fix-background-variance

Simplified, faster variance computation; shrinkage now affects only the expectation, not its variance 
Package: betterChromVAR
Commit: 9e8be3d366a91c940c8d6617e1ea7c6a9f881dc2
Author: koefoeden <koefoeden@gmail.com>
Date: 2026-10-16 16:13:29 +0200
Commit message:

 Subtract the squared background means in place to save memory
 
Package: betterChromVAR
Commit: 69d0b53e478b198b4421407e56014e6b96489665
Author: koefoeden <koefoeden@gmail.com>
Date: 2026-10-16 13:38:03 +0200
Commit message:

 Compute background variance over each bin's background peaks
 
Package: betterChromVAR
Commit: b10738ea8c88c9bcf6b0c17c6a8b66933a06cb8e
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 14:32:50 +0200
Commit message:

 updated doc
 
Package: betterChromVAR
Commit: 0ef3a0cf4a54816895566356d32f7df610dd6198
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 14:28:50 +0200
Commit message:

 claude-generated unit tests...
 
Package: betterChromVAR
Commit: a81a7b226fbd42a93aca6166d4b66baca386c77e
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 14:27:49 +0200
Commit message:

 motif reliability and variability
 
Package: betterChromVAR
Commit: b526a0be9c6c5ccb6a98f202fd416cacd25a622e
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 14:26:39 +0200
Commit message:

 updated vignette
 
Package: betterChromVAR
Commit: 9ef5978346cd7a663428254015278875308a6fea
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:43:28 +0200
Commit message:

 added kNN smoothing
 
Package: betterChromVAR
Commit: e3093403fdfa6f034bc84e01989d395f6af59b4f
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:42:37 +0200
Commit message:

 added motif reliability and empirical noise estimate
 
Package: betterChromVAR
Commit: 5d0969361be9174c71bfc4306eae1caa57dcca9b
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:41:58 +0200
Commit message:

 added fpc
 
Package: betterChromVAR
Commit: f48405e2769237a3e31f52a9a42c271595a92956
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:41:30 +0200
Commit message:

 Neff in normalization doc
 
Package: betterChromVAR
Commit: 2d75dba32ffb4f3b22ebab21dbb83f7130308c1d
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:37:50 +0200
Commit message:

 fixed variance
 
Package: betterChromVAR
Commit: 4f2a5090d2e68d73f41675d01a6c8802acc92d1f
Author: plger <pl.germain@gmail.com>
Date: 2026-10-08 12:27:39 +0200
Commit message:

 fixed analytical variance and added finite-pop correction
 
Package: GSVA
Commit: 9db994d166da271490ac5214b9935625c51e18e5
Author: Robert Castelo <robert.castelo@upf.edu>
Date: 2026-10-22 19:55:18 +0200
Commit message:

 Fix glued variable in error message when annotation package is not installed
 
Package: exploreSE
Commit: 6b04053c642f66f229cb0026c8f6761140c7dcf0
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-22 16:55:39 +0200
Commit message:

 adjusted defaults and organisation of options
 
Package: exploreSE
Commit: 4023b9758d84dec13b94a0b54f872fc2dd1a02e5
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-22 16:27:42 +0200
Commit message:

 added example contexts
 
Package: exploreSE
Commit: 4fc30ce8bda93cc195080407ce2e653ba9292b44
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-22 15:59:58 +0200
Commit message:

 added a get genes button
 
Package: exploreSE
Commit: 61adfcafcad21dfa38e2b7165076acd26e4f025e
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-22 15:37:19 +0200
Commit message:

 replaced adjusted P value with FDR
 
Package: exploreSE
Commit: 7c1a98d39ce390413775fd484e117e682f42b232
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-22 15:28:35 +0200
Commit message:

 add the line annotation and remove upscaling for the points
 
Package: scCertify
Commit: aa7bc12e6aaeccc3fbd2b052d68f72549bdfea0b
Author: Jaya-Surya-dev <jayasuryadoddetipalli@gmail.com>
Date: 2026-10-22 19:03:00 +0530
Commit message:

 Bump package version to 0.99.8
 
Package: scCertify
Commit: 633e20ee2599521f1f0c2581cb5e7dd578f84a04
Author: Jaya Surya Doddetipalli <jayasuryadoddetipalli@gmail.com>
Date: 2026-10-22 18:52:42 +0530
Commit message:

 Merge pull request #1 from Jaya-Surya-dev/discovery-aware-development

Add discovery-aware annotation features 
Package: scCertify
Commit: 819932e320fcc2de200dd312f7eae151f0d2932b
Author: Jaya-Surya-dev <jayasuryadoddetipalli@gmail.com>
Date: 2026-09-13 13:21:59 +0530
Commit message:

 Address reviewer feedback for discovery-aware analysis
 
Package: scCertify
Commit: e653c67436acde2b4a5c1ffb68f1b62ac4161d59
Author: Jaya-Surya-dev <jayasuryadoddetipalli@gmail.com>
Date: 2026-09-13 12:46:08 +0530
Commit message:

 Add discovery-aware annotation features
 
Package: MsBackendMetabolomicsWorkbench
Commit: aa52e90eda7a5d6c9249c5fa02fb71f521c74d48
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-22 15:51:49 +0200
Commit message:

 Merge pull request #13 from rformassspectrometry/gabri

fix: metadata download after changes in JSON parsing 
Package: MsBackendMetabolomicsWorkbench
Commit: ea254590972d581b3816ebc2ee7f4f872e795eec
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-22 15:26:05 +0200
Commit message:

 address Johannes comments
 
Package: MsBackendMetabolomicsWorkbench
Commit: e07b5fce01023a76716c6f6960776db7b36485b4
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-22 09:43:44 +0200
Commit message:

 fix: metadata download after changes in JSON parsing
 
Package: MsBackendMetabolomicsWorkbench
Commit: 09587bca2b827f76ea4dee8163b17319b1320637
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-02 15:36:29 +0200
Commit message:

 Merge pull request #12 from rformassspectrometry/gabri

fix: parsing filename with "+" and same filename in subfolders 
Package: MsBackendMetabolomicsWorkbench
Commit: 1104974c81dcab8b3f038c7b7ca7ab79d85e3a6d
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-02 10:05:42 +0200
Commit message:

 fix: issue Check if issues from MsBackendMetaboLights are also a problem here
Fixes #11 . Fix bug in parsing file name with "+"
 
Package: powerTCR
Commit: 8972e9287e8691ef62340fed5af9347e9e0d57f3
Author: Hillary Koch <hbk5086@psu.edu>
Date: 2026-10-22 09:28:50 -0400
Commit message:

 update structure check for model fit
 
Package: mia
Commit: b3ac981d010626e3566bb85845fcae19a0f384eb
Author: Muluh <127390183+0xMuluh@users.noreply.github.com>
Date: 2026-10-22 10:14:37 +0300
Commit message:

 Add Allen's phylogenetic entropy and Rao's quadratic entropy to addAlpha (#845) (#847)

Co-authored-by: Tuomas Borman <tvborm@utu.fi> 
Package: mia
Commit: d4884e76c3ff4890aa5a73cc1b593afd41926cf6
Author: Rasmus Hindström <56149499+raivo-otus@users.noreply.github.com>
Date: 2026-10-20 10:57:16 +0300
Commit message:

 Fix/optimize multiple alpha index rarefaction (#857)

Co-authored-by: Tuomas Borman <60338854+TuomasBorman@users.noreply.github.com> 
Package: mia
Commit: 5e65c510856f8eeaf0266ca237c36b5b6dc1939b
Author: Rasmus Hindström <56149499+raivo-otus@users.noreply.github.com>
Date: 2026-10-19 10:06:02 +0300
Commit message:

 Fix/alpha rarefaction bug (#854)

Co-authored-by: Tuomas Borman <tvborm@utu.fi>
Co-authored-by: Tuomas Borman <60338854+TuomasBorman@users.noreply.github.com> 
Package: miaTime
Commit: 534c76d28cf77ba29781b4e58c86f94ed28f38fa
Author: Muluh <127390183+0xMuluh@users.noreply.github.com>
Date: 2026-10-22 16:27:03 +0300
Commit message:

 add getSurvival (#112)

Signed-off-by: Daena Rys <rysdaena8@gmail.com>
Co-authored-by: Tuomas Borman <60338854+TuomasBorman@users.noreply.github.com>
Co-authored-by: Tuomas Borman <tvborm@utu.fi> 
Package: miaTime
Commit: de5b9a9dbc6617c18d7cb0f640babd1c43cd4791
Author: Muluh <127390183+0xMuluh@users.noreply.github.com>
Date: 2026-10-22 10:46:44 +0300
Commit message:

 Add reference sections to pkgdown site (#128) 
Package: periodicDNA
Commit: 73d785f756bdbf0ffe9d56e6c6ad10a4494cbe48
Author: js2264 <jacquesserizay@gmail.com>
Date: 2026-10-22 14:48:00 +0200
Commit message:

 bump to 1.23.1
 
Package: periodicDNA
Commit: 9c79080090460308b5c985418e81118f18095452
Author: js2264 <jacquesserizay@gmail.com>
Date: 2026-10-22 14:47:49 +0200
Commit message:

 fix: use importFrom syntax for magrittr
 
Package: periodicDNA
Commit: b35a6ce9601be6a80401f337d45b3c88fbee6d1a
Author: js2264 <jacquesserizay@gmail.com>
Date: 2026-10-22 14:47:34 +0200
Commit message:

 fix: update ggplot2 language
 
Package: SpatialFeatureExperiment
Commit: 82fed2166a4472d50a1ef9fa1ce52fb2809b6487
Author: Lambda Moses <lambda.calc29@gmail.com>
Date: 2026-10-22 19:47:17 +0800
Commit message:

 Deprecated split z and split by cell components in transcript spots and dealt with failed unit tests
 
Package: SpectraStash
Commit: 0fe6b50d40df294b7e7ef2d5531ca782a2b7bb88
Author: Johannes Rainer <5506112+jorainer@users.noreply.github.com>
Date: 2026-10-22 13:42:11 +0200
Commit message:

 Merge pull request #17 from rformassspectrometry/jomain

feat: add alabaster stash for MsBackendOfflineSql 
Package: SpectraStash
Commit: 0069be8f5bf2262a65495a65d5360ab9138b0af4
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-22 07:24:01 +0200
Commit message:

 feat: add alabaster stash for MsBackendOfflineSql

- Add alabaster stash format for `MsBackendOfflineSql` with all related unit
  tests and documentation.

Note that we are still not importing from the *MsBackendSql* package, but only
listing this package in *Suggests* to keep the dependency tree of *SpectraStash*
somewhat manageable.
 
Package: PasillaTranscriptExpr
Commit: a8c00fa51878fb8fad18205ff176f06d505c64ce
Author: lshep <lori.shepherd@roswellpark.org>
Date: 2026-10-22 07:41:22 -0400
Commit message:

 User requested deprecation
 
Package: BgeeDB
Commit: ca3e6af3cadbeca5421734382e71885b1d06a83e
Author: Julien Wollbrett <julien.wollbrett@unil.ch>
Date: 2026-10-22 11:36:18 +0200
Commit message:

 bump version
 
Package: BgeeDB
Commit: e0334b8951ef62d2bb3f3a7d2b5efb8386dfb2e0
Author: Julien Wollbrett <julien.wollbrett@unil.ch>
Date: 2026-10-22 11:35:47 +0200
Commit message:

 update example to work with new fast fisher approach not using topGo for propagation
 
Package: GSVA
Commit: 926e1e53a60bb190fbf6ff212750983ff56e1bf6
Author: Robert Castelo <robert.castelo@upf.edu>
Date: 2026-10-22 10:42:46 +0200
Commit message:

 Replace BiocParallel::bpiterate(), which is not supported by the
DoparParam back-end, by calls to bplapply() in rounds of one block per
worker, when socket or foreach workers receive blocks of an in-memory
input from the main process. The main process frees the blocks of each
round before taking the next ones, and the copies it holds are now
included in the memory budget given by 'maxmem' and in the memory
estimated before the calculations start. Added doParallel and foreach to
Suggests, for a new unit test on the DoparParam back-end.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: limma
Commit: d6e69a137f5f27020f6c33ebb711aeeadb13f451
Author: Gordon Smyth <smyth@wehi.edu.au>
Date: 2026-10-22 19:41:57 +1100
Commit message:

 limma 3.99.3

- New argument 'fixed' and code speed-up for strplit2().
 
Package: AHMassBank
Commit: 420bc31e455be8104e2b8b688ef65bba5a84003b
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-22 10:34:14 +0200
Commit message:

 Add additional resources, retrievable from GitHub
 
Package: Chromatograms
Commit: 32220289a83d21fd461907b3223ef72df12cbdee
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-10-22 09:36:04 +0200
Commit message:

 fix: CITATION duplicated URL and missing issue number
 
Package: Chromatograms
Commit: 68d9ae670b65416f1cae641e73c24f3f0c8eba28
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-10-22 09:31:19 +0200
Commit message:

 Merge Bioconductor devel into main
 
Package: Chromatograms
Commit: 83d904c5a9292237bfe65a8a0a0ec9ab24d886cb
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-16 12:44:50 +0200
Commit message:

 Merge pull request #66 from rformassspectrometry/gabri

feat: functions to generate ggplot2 figures 
Package: Chromatograms
Commit: bc8f21f04651e3b1b342d0304f5308095a478f48
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-16 11:31:31 +0200
Commit message:

 tests: add unit test for as.data.frame.Chromatograms
 
Package: Chromatograms
Commit: 382ed75689e6485314fb078b6a6cdc5da6e1645c
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-16 09:14:18 +0200
Commit message:

 fix: address Phili comments
 
Package: Chromatograms
Commit: a007394a21f3878be80e0eec83737f745fb0597e
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-15 15:46:19 +0200
Commit message:

 fix: update wrong variable
 
Package: Chromatograms
Commit: 6c2c99508713685f4fc214318b9b29a34939edf5
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-15 15:41:32 +0200
Commit message:

 Address Phili comments
 
Package: Chromatograms
Commit: a91df7f65337a6347247c7762efdd0351275d4fa
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-12 13:38:52 +0200
Commit message:

 address Johannes comments
 
Package: Chromatograms
Commit: 29ded92b295280d22bed15e7c98b611b07952017
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-09 10:34:09 +0200
Commit message:

 fix: citation
 
Package: Chromatograms
Commit: 3a1991c1e9abeb22a4376c7d7c0f5b17952aaf00
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-09 09:52:36 +0200
Commit message:

 Merge branch 'main' into gabri
 
Package: Chromatograms
Commit: 340d0ef025d0019789603f5adaf90d75f30bb336
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-08 17:49:37 +0200
Commit message:

 update as.data.frame.chromatogram following Johannes comments
 
Package: Chromatograms
Commit: 45d3cfe867d8bdb7a0cdd408d2c8ce305ce5b326
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-10-07 11:51:12 +0200
Commit message:

 refactor: function from chromatograms to data.frame
 
Package: Chromatograms
Commit: 19e4f8f5431f2acf75a7b4c50133b2a43ae4a541
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-10-06 11:33:40 +0200
Commit message:

 Version 1.3.4
 
Package: Chromatograms
Commit: 230a44e619e584b7141fad7ae5bb911ef102488e
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-10-05 13:54:35 +0200
Commit message:

 Merge pull request #69 from rformassspectrometry/jomain

Add citation 
Package: Chromatograms
Commit: 344f0175df65c57ba8cefd6f0481046c45c9d505
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-05 13:38:57 +0200
Commit message:

 Add citation
 
Package: Chromatograms
Commit: 7fccade0dcea0dbfb00e497a62003f28f964e8e8
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-09-28 09:45:09 +0200
Commit message:

 refactor: move ggiraph to Suggests to decrease dependencies
 
Package: Chromatograms
Commit: 83c779f784a323f01cd479f4e9ff09f7d93e1cb7
Author: Johannes Rainer <5506112+jorainer@users.noreply.github.com>
Date: 2026-09-08 07:24:19 +0200
Commit message:

 Merge pull request #67 from rformassspectrometry/jomain

Add logo 
Package: Chromatograms
Commit: fab04d8fe796f21af8bf9737159c3bce9740d7a7
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-09-07 16:52:23 +0200
Commit message:

 Add logo
 
Package: Chromatograms
Commit: 32ab92123d1c0952599c1c5c11ba8a5f52c68b9b
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-09-03 14:42:11 +0200
Commit message:

 docs: update documentation
 
Package: Chromatograms
Commit: c48d955b586c8af0cb99af0d928aa83448021ac6
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-09-03 09:48:36 +0200
Commit message:

 refactor: change ggplot function for color
 
Package: Chromatograms
Commit: f731e8056fc23bc21067df620625b10a3d82e568
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-08-27 14:17:48 +0200
Commit message:

 add unit test for ggplot figures
 
Package: Chromatograms
Commit: 58099c5c57ff3f55d9228aa92c74989d054c8ab3
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-08-18 13:55:10 +0200
Commit message:

 Merge branch 'main' into phili
 
Package: Chromatograms
Commit: 44f00b2285a79db039a9c534fc44ee7f83626b1c
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-08-18 12:47:36 +0200
Commit message:

 Update Supplementary_Material_3_interoperability_chromExtract.pdf
 
Package: Chromatograms
Commit: 57a7e7ac7041278336c6714f44acba5794b03332
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-08-07 14:09:41 +0200
Commit message:

 feat: add parameter to hide axis to ggplot
 
Package: Chromatograms
Commit: 7a5ef8a04a535ab58b4d8401f8e20d1661c49fd0
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-08-06 15:49:30 +0200
Commit message:

 separate plot and ggplot. Add interactivity
 
Package: Chromatograms
Commit: f1b9327d4356cae14dbf990a322f3a11febb3639
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-08-06 11:26:53 +0200
Commit message:

 Merge branch 'main' into gabri
 
Package: Chromatograms
Commit: 09ac528a75a51357720cab3c2de4950febd57ac5
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-08-05 13:59:10 +0200
Commit message:

 Merge pull request #63 from rformassspectrometry/paper-revision

Paper revision (benchmarks) 
Package: Chromatograms
Commit: 6392ec65746c9a4dfbfbee0f322d2344bfe0a4a5
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-08-05 13:52:31 +0200
Commit message:

 Merge pull request #64 from rformassspectrometry/paper-revision-jo

Update Supp 3 
Package: Chromatograms
Commit: 958759e3e74ea70728326cb3675bd696f7052d1d
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-08-05 13:40:57 +0200
Commit message:

 Merge pull request #65 from rformassspectrometry/jomain

Update and restructure README 
Package: Chromatograms
Commit: ec485abb447f09d10ac167b0064327924211cf65
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-08-05 13:26:26 +0200
Commit message:

 Update and restructure README
 
Package: Chromatograms
Commit: efb61f134b865612b1f22b89e342047cf0ba3c99
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-08-05 12:33:42 +0200
Commit message:

 Update Supp 3
 
Package: Chromatograms
Commit: db39064e08e7e0bb6740604e225a722c32e8d600
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-08-04 19:16:52 +0200
Commit message:

 Update Supplementary_Material_3_interoperability_chromExtract.qmd
 
Package: Chromatograms
Commit: 953c82fbcbdca052d3286dac79834cbbe2da7d74
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-08-04 13:07:50 +0200
Commit message:

 refactor: benchmark display xcms integration and chromExtract on large scale data
 
Package: Chromatograms
Commit: c5a9b7185769a68438d8071a932714159c6ae003
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-08-04 12:53:52 +0200
Commit message:

 Merge pull request #61 from rformassspectrometry/paper-revision-jo

refactor: adapt to the large-scale data 
Package: Chromatograms
Commit: cd50475a8f3a6e912a40344027fd44d4fbae2cd7
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-08-04 11:04:56 +0200
Commit message:

 Update Supp 3
 
Package: Chromatograms
Commit: d832ada0cdec43fc0a57a606225187f557f80ad1
Author: Gabriele Tomè <39188419+gabrieletome@users.noreply.github.com>
Date: 2026-08-03 15:54:31 +0200
Commit message:

 feat: update from plot to ggplot
 
Package: Chromatograms
Commit: 0a711bd777ca48253913a0203cd1d150aa8b84cb
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-08-03 11:26:31 +0200
Commit message:

 Add Supplementary file 2 qmd
 
Package: Chromatograms
Commit: f90f190da4ec0f4e302d964592d7cf27be9de586
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-08-03 11:10:02 +0200
Commit message:

 Merge remote-tracking branch 'origin/main' into paper-revision-jo
 
Package: Chromatograms
Commit: 2f0d6182a77da888907d212c739f64533d119e0b
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 11:58:34 +0200
Commit message:

 small fix
 
Package: Chromatograms
Commit: 0cb4ce4a3d9c04f0282fe5c15306c121c2d25d14
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 11:57:22 +0200
Commit message:

 Update/fix format of supplements
 
Package: Chromatograms
Commit: 8696f4d906acfb602ad2d6beb7d7e1e90022a4f6
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 11:19:23 +0200
Commit message:

 Update Supplementary Material 3
 
Package: Chromatograms
Commit: ef7e39cea24b6c9b26884a4298ea342ada66258b
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-07-31 10:36:13 +0200
Commit message:

 Merge pull request #60 from rformassspectrometry/chrom-extract-ref

perf(chromExtract): avoid re-validating backend when matching chromData 
Package: Chromatograms
Commit: fabd81c2ea703e1d70584f534b111e5c19d79a16
Author: Philippine Louail <philippine.louail@outlook.com>
Date: 2026-07-31 10:35:21 +0200
Commit message:

 Merge pull request #62 from rformassspectrometry/jomain

Additional performance improvements for ChromBackendSpectra 
Package: Chromatograms
Commit: 4bf3a95b1d8ddfedab40e6a7945430cffa4665f6
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 08:47:23 +0200
Commit message:

 Update title
 
Package: Chromatograms
Commit: 78d9c8e42783b5ac194dc386973c6e1be682cb4b
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 08:31:46 +0200
Commit message:

 refactor: further performance improvements for ChromBackendSpectra

- Avoid repeated calls to extract data from a `Spectra` object.
- Use `rbindlist()` instead of `rbindFill()` to combine `data.frame`s.
 
Package: Chromatograms
Commit: 26b20aa6a6debc04455aa6c611abb6659e0d781b
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 08:16:02 +0200
Commit message:

 Small update
 
Package: Chromatograms
Commit: 33584466fb0181b1f9c8124f18f64ba5b7ad3188
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 07:44:28 +0200
Commit message:

 refactor: small update
 
Package: Chromatograms
Commit: dcc19a2a0dce2b53089c6f2b3ce0867c1cdebf91
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 07:25:09 +0200
Commit message:

 rename supp material 3
 
Package: Chromatograms
Commit: 55065ef650847319ab3c5503625ebb60abb10191
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-31 07:17:33 +0200
Commit message:

 Update Supplementatry Material 1: include large scale data
 
Package: Chromatograms
Commit: 5ac3a360be16831885efaba11f677a22e8b720d5
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-30 17:48:02 +0200
Commit message:

 perf(ChromBackendSpectra): avoid re-validating Spectra when setting chromSpectraIndex
 
Package: Chromatograms
Commit: fe493e24e0f565b97969dda5d13b73ce3a965fbe
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-07-30 07:56:42 +0200
Commit message:

 refactor: adapt to the large-scale data
 
Package: Chromatograms
Commit: c302f3cb82735fc2dd30c4f8e93e0310c1323762
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-29 17:18:34 +0200
Commit message:

 Update helpers.R
 
Package: Chromatograms
Commit: a0fa6ac7b2ff34a717b53fdaa122a17a86a249d7
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-29 17:13:50 +0200
Commit message:

 perf(chromExtract): avoid re-validating backend when matching chromData
 
Package: Chromatograms
Commit: 00c00b70a513b68fe2fa1b203d67ca4ec7b1ca59
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-28 15:34:05 +0200
Commit message:

 prototype-qmd
 
Package: Chromatograms
Commit: 386f2fbca870eadeccf867859dc6564a823d0de3
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-23 11:32:41 +0200
Commit message:

 Merge branch 'main' into phili
 
Package: Chromatograms
Commit: 054d2b9b6b400290cffc07b20c962627595c2deb
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-22 18:09:08 +0200
Commit message:

 Remove stale tests
 
Package: Chromatograms
Commit: b2aec72c0186f67161c28f7a3dc777555e15a7df
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-22 17:42:03 +0200
Commit message:

 refactor: peaksData() improvments for overlapping RT windows
 
Package: Chromatograms
Commit: 275c951aacf3b7a23401917fc875395d806547fb
Author: Philippine Louail <127301965+philouail@users.noreply.github.com>
Date: 2026-07-22 14:04:44 +0200
Commit message:

 refactor: peakBoundary for efficiency
 
Package: anndataR
Commit: 339176dfe3c961c5aa329d700af59d398a19f3ab
Author: Robrecht Cannoodt <rcannood@gmail.com>
Date: 2026-10-22 08:47:15 +0200
Commit message:

 Fix setting obsm/varm to NULL on backed objects (#536)

* Test that setting obsm/varm to NULL writes a null element

* Accept extra arguments in the null writers 
Package: anndataR
Commit: 24f52ce320b3dad9d15bad7c11c6803efd93a285
Author: Max Frank <max.frank@czbiohub.org>
Date: 2026-10-21 11:31:00 -0700
Commit message:

 Write obs_names/var_names as the index of obsm/varm data frames (#501)

* Write obs_names/var_names as the index of obsm/varm data frames
* Cover data frames in the obsm/varm roundtrip tests
* Check the index of R generated obsm/varm data frames with h5diff
* Test obsm/varm data frames with missing values

Co-authored-by: Witold Wolski <wewolski@gmail.com>
Co-authored-by: Robrecht Cannoodt <rcannood@gmail.com> 
Package: anndataR
Commit: 322eabe3bcd7c3f9b858f442854bcceccb502623
Author: Robrecht Cannoodt <rcannood@gmail.com>
Date: 2026-10-21 17:31:17 +0200
Commit message:

 Use Python 3.14 in benchmark and pkgdown workflows (#534) 
Package: anndataR
Commit: 824b775de59d33cb1fc867134d314d8292d0e8fe
Author: Robrecht Cannoodt <rcannood@gmail.com>
Date: 2026-10-21 16:41:59 +0200
Commit message:

 Error instead of skip when Python tests are required (#533)

* route python skip helpers through one helper

* add test for strict python test mode

* error instead of skip when python tests are required

* document strict python test mode

* fix lint

* update news

* bump version 
Package: anndataR
Commit: f9d753429d122f80d9fb07fc5af2e8459cbf4774
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: 2026-10-21 13:38:43 +0200
Commit message:

 Bump bencherdev/bencher from 0.6.11 to 0.6.13 (#528)

Bumps [bencherdev/bencher](https://github.com/bencherdev/bencher) from 0.6.11 to 0.6.13.
- [Release notes](https://github.com/bencherdev/bencher/releases)
- [Commits](https://github.com/bencherdev/bencher/compare/v0.6.11...v0.6.13)

---
updated-dependencies:
- dependency-name: bencherdev/bencher
  dependency-version: 0.6.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 
Package: anndataR
Commit: 1db33d1536b034800821a75cb80080837680b086
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: 2026-10-21 12:03:22 +0200
Commit message:

 Bump dawidd6/action-download-artifact from 21 to 27 (#529)

Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 21 to 27.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v21...v27)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '27'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 
Package: anndataR
Commit: 581123a9e2f55cb9042ac8b64d0af75c3755981e
Author: Robrecht Cannoodt <rcannood@gmail.com>
Date: 2026-10-21 09:16:58 +0200
Commit message:

 Add 1.2.1 and 1.2.2 entries to NEWS (#530) 
Package: Statial
Commit: d2cb1f8ba252505264f4f8a67ac20ea95c0ad94c
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 17:13:30 +1100
Commit message:

 pkgdown workflow: run on devel, build against Bioconductor devel (3.24) with spicyR from its GitHub devel branch, as lisaClust's

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: Spectra
Commit: 7f8fc2fee96dc3e20c3994e90b390d9a1343dcf9
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-22 07:55:29 +0200
Commit message:

 docs: update citation info and add additional backend links
 
Package: spicyR
Commit: fc1719c1c463f96090e82a905a67dfb5f61fa7c3
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 16:40:24 +1100
Commit message:

 1.99.39: pkgdown reference sections from roxygen @concept tags (has_concept), not a hand-kept list

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: lisaClust
Commit: 26cbfdd44915a975528460f32b273e3d35f5cade
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 16:21:13 +1100
Commit message:

 pkgdown workflow: build against Bioconductor devel (3.24), as spicyR's does, so the devel spicyR and spatialdataR resolve

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 03ed13ef694a2aee8e0fe836ead76280429e6c68
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 15:59:26 +1100
Commit message:

 pkgdown: calibrationCheck in the reference index

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: lisaClust
Commit: 1268f99f67d0e6a1ba679acec24b9d3ba215f8a3
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 15:59:20 +1100
Commit message:

 pkgdown workflow: spicyR from its GitHub devel branch (lisaClust 1.21.11 needs spicyR 1.99.38, not yet built by Bioconductor)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: Statial
Commit: 1a656cb96082668c30c1d87f7b910c72d8f25e24
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 15:41:03 +1100
Commit message:

 1.15.6: simpler vignette (defaults no longer passed, one-step survival vector, colTest() matching by name, coord_cartesian zoom, bcells fix)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: lisaClust
Commit: 029e4dcaa5b3078fdad5acfdfefc860b586ee5ef
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 15:40:56 +1100
Commit message:

 1.21.11: regionBoxPlot(subject =); regionMap() labels upright with many regions; simpler vignette (named examples, medians from colTest(), subject)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 5f9ace461f9f5fba2ad01d68f0f3a6d01ef86e6a
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 15:19:46 +1100
Commit message:

 1.99.38: colTest() takes subject, reports group medians with the Wilcoxon test, and matches rows to a named condition

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 738dfd8a580032bbdf69b4656020198c1def7060
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 13:10:34 +1100
Commit message:

 1.99.37: calibrationCheck() (the shuffle check the vignette recommends); simpler vignette: imageID/cellType set once, ER.Status as it is, cores named, whole data set in the store section

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: VISTA
Commit: 283ac73bb057141e28cc973d969f9556a269a60c
Author: Chirag Parsania <chirag.parsania@gmail.com>
Date: 2026-10-22 12:21:28 +1100
Commit message:

 Bump to 1.1.7: make the gene-order test invariant to eigenvector sign

R-CMD-check failed on Linux CI for 1.1.6 in test-label-value-integrity.R:
shuffling the genes passed to get_pca_plot() returned both PCA axes negated
-- the same embedding, mirrored -- and the permutation-invariance test read
that as an order dependence. The test shuffles with sample() and no seed, so
it was a coin flip on that BLAS build; 1.1.5 passed by chance and nothing in
1.1.6 caused it. It is the failure c22fd55 fixed for the snapshots, in a test
that fix did not reach.

Orient the PCA (PC1/PC2) and MDS (Dim1/Dim2) axes with canon_axis() before
comparing, as the snapshots already do. canon_axis() moves to helper-data.R
so both files share one definition. A new test pins the property: negating
an axis passes, moving a point still fails, and without orientation the flip
fails as it did on CI.

Test-only change; no user-visible behaviour changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: spicyR
Commit: abc77723e4235a9e9e7f8869eaadfb6ffdcffcda
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 12:17:41 +1100
Commit message:

 1.99.36: comments link each SpatialData-writer workaround to its upstream issue (Rarr #260, #261; spatialdataR #115, #287)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: f00e9780befaa9710afb1cafbafa44b16685cf38
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 10:49:40 +1100
Commit message:

 1.99.35: writeCellStore() writes the cells of each image as a points element, so the table annotates elements of the store

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 348ffacfbc112f380f5bfc408e8a02d1968ea827
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 10:49:40 +1100
Commit message:

 1.99.34: writeCellStore() writes a whole SpatialExperiment (assays, rowData, reducedDims, images); writer in spatialdataR's idiom on Rarr

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 022ed2c40e8b5f7371225014f4bd92c13dc76ec3
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 10:49:34 +1100
Commit message:

 1.99.33: writeCellStore() takes a SpatialExperiment; plotImage() without a pair shows every cell type; vignette store section on the SpatialExperiment

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: SpaNorm
Commit: 6f7ffeb2297bb157ef9845aecdd3b8c42995dde4
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-21 11:08:42 +1000
Commit message:

 Fix plotSpatial()/plotCovariate() for genes with non-syntactic names (e.g. HLA-B)

as.character() on the aesthetic expressions wrapped such names in backticks,
so no feature matched. Take the names with a shared aesColnames() helper.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 8e854a1bb99a199b9e868f71a307ed2766b46100
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 18:25:23 +1000
Commit message:

 site: remove the gap between the navbar and the home page hero

Quarto's main.content has a 1em top margin that the negative hero margin only
partly cancelled (a ~14px light strip showed under the navbar).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 24b316bbc8d3fb4bcaf499279cbfb7ee5309ebc6
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 16:44:09 +1000
Commit message:

 site: forest-green redesign, landing page and footer

Palette from the hex logo, system fonts, dark navbar with gold active
indicator, title banners, styled code/tables/tabsets, landing page with
hero, feature cards, install, cite and project cards, page footer. Home
page has no table of contents or empty References heading.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: d4dccdfe8695c88bbacb3a957335bd0c3ec41b1c
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 16:38:35 +1000
Commit message:

 site: remove the redundant Articles section

Fold the unique content (polishing options table and held-out genes,
SVG/GPU calls, polish memory budget, static GPU benchmark with caveats,
polishNB pointer) into Get started and delete site/articles and
scripts/article-setup.R along with the navbar and home links.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 43b2a57418a93102d749696adb63d642d01a2f69
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 17:08:23 +1000
Commit message:

 ci: skip R-CMD-check for website-only changes [skip ci]

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: b3baf9e4df88fbff97301fc470f326efe1b436ce
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 14:03:09 +1000
Commit message:

 docs(site): show total Bioconductor downloads (computed at build time) instead of the rank badge; weekly rebuild

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 9f48be012240d1e504e9b56d09cb3226ad6ad908
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 13:10:17 +1000
Commit message:

 ci(site): do not cache the basilisk env (restored venv has dangling interpreter symlinks)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 06821c8715969f9253dfcb3befb2f49813b48d34
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 13:03:14 +1000
Commit message:

 docs(site): home page with logo, authors, download stats and CI status; add SpaNorm logo

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 2b95feee27b2474a9831744761e965d2113f95e6
Author: Dharmesh D Bhuva <30132854+bhuvad@users.noreply.github.com>
Date: 2026-10-20 13:03:14 +1000
Commit message:

 docs: cite the Genome Biology paper instead of the bioRxiv preprint

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 157be3ec1533eb12e30d729029e476262907b5ec
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 11:56:08 +1000
Commit message:

 site: make every read-only logging-handler stream property assignable (torch's _StderrHandler)

reticulate's output capture failed on torch._logging._internal._StderrHandler, a
different class from logging._StderrHandler that the previous shim patched. Patch all
Handler subclasses with a read-only stream property, including ones defined later
(torch is imported after the shim runs).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: 4db11b37d3cb331f4ac016b1aef16ed63733c152
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 10:58:58 +1000
Commit message:

 ci(site): latest R + Bioc devel, drop reticulate/R pins; shim logging._StderrHandler.stream for reticulate capture

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: d8d49e14d1ab28001b4b6fa65b8d904972f949d5
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 10:23:01 +1000
Commit message:

 ci(site): build on R 4.5 so the pinned reticulate 1.44.1 compiles

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: afe34866d2410b16068e43bb2bf09ea656e94684
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 10:06:17 +1000
Commit message:

 ci: pin reticulate 1.44.1 (1.47.0 py_capture_output breaks on logging._StderrHandler); print py_config

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012hFT9QMAZMopnJeA2VW41B
 
Package: SpaNorm
Commit: f233b7be4b11399bb5ae8eca2b2da43bb75b679e
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 09:01:26 +1000
Commit message:

 fix: compute the dispersion winsorisation cap on finite log-dispersions only

A single NaN psi made psi.max NaN and turned every gene's logPAC/Pearson/
median-bio output into NaN; psi = 0 (log -Inf) dragged the median to -Inf.
Shared internal helper .psiMax() used by winsorisePsi() and subsetFitGenes().
Bump to 1.7.16.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 953ee6fcb314f7b0593a9d6d0bc5e45456fca731
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-20 08:51:38 +1000
Commit message:

 ci(site): use the runner's Quarto when present, require >= 1.8

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: ec6dd518f77f8e170e782d0f7695df352985ca01
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-19 21:14:14 +1000
Commit message:

 docs: combined R/Python Quarto website, built and deployed by GitHub Actions

Replaces pkgdown with a single Quarto site serving SpaNorm (R) and spanormpy
(Python): tabbed R|Python Get started, articles, R and Python reference, and an
R vs Python page. Only site sources are committed (site/ is in .Rbuildignore);
.github/workflows/quarto-site.yaml renders and deploys to gh-pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: RAMEN
Commit: 3cdc9cab1a4ca5d07d965619ace4c7dac7dcb4a7
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 14:31:00 -0700
Commit message:

 Fix bug due to nested internal functions in parallel workers
 
Package: lisaClust
Commit: 318165b1c29f4bdeafd9572b607cdfd18408007c
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-22 08:07:54 +1100
Commit message:

 1.21.10: parallel test passes with a single-threaded BLAS (Bioconductor build machines)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: RAMEN
Commit: f7ff222cf97e16e14d9e090f84c80017574bcc32
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 13:42:31 -0700
Commit message:

 Bump R version
 
Package: RAMEN
Commit: 7e47a44cb0f360633803fe1f06aaf6888f3bba0c
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 13:37:40 -0700
Commit message:

 Export internal functions to workers, so they are available when using PSOCK
 
Package: RAMEN
Commit: ca2b90a00440b588210cf3981250eafebb1943e5
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 12:56:46 -0700
Commit message:

 Add peer review issue links
 
Package: RAMEN
Commit: 8a2ed6e69affadb8c6156fe47fa4bb178a719684
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 12:52:38 -0700
Commit message:

 Bump patch version
 
Package: RAMEN
Commit: b21015840b2452a17eef3f531e2a98335b222df6
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 12:51:53 -0700
Commit message:

 Add github installation instructions as alternative
 
Package: RAMEN
Commit: 854e8ea75ba030c5dc48fd01bad7629405a42994
Author: Erick Navarro <ericknadel98@ciencias.unam.mx>
Date: 2026-10-21 12:50:22 -0700
Commit message:

 Update version to upcoming release
 
Package: eiR
Commit: 428c2a8a5574f523c8f8a575eb3a0a8b31ed9575
Author: khoran <khoran@cs.ucr.edu>
Date: 2026-10-21 11:15:30 -0700
Commit message:

 fix unit test to be more robust against random initial conditions
 
Package: sesame
Commit: df2946fc60f17f00eaa4a6dfc9d24c77193d6679
Author: Wanding Zhou <zhouw3@email.chop.edu>
Date: 2026-10-21 12:27:59 -0400
Commit message:

 1.31.8: CITATION reads without a declared encoding

inst/CITATION spelled one author name with a literal non-ASCII character
(Szabó, the MM285 paper). utils::readCitationFile() without a declared
encoding refuses non-ASCII input, so BiocCheck warned "Unable to read
CITATION file" (bioc R-universe, 1.31.7). The name is now the escape
"Szabó": the file is pure ASCII and renders the same.
 
Package: MACSr
Commit: a05551948a56776664fc9ef861996e52f452b3fd
Author: qhu <huqmail@gmail.com>
Date: 2026-10-21 12:18:20 -0400
Commit message:

 Upgrade to MACS 3.1.0, add threads argument, version bump 1.21.4

- Use Python 3.12 and macs3 3.1.0 in the basilisk environment.
- hmmratac: add remove_dup and em_jump, deprecate keepduplicates,
  and default decoding_steps to 5000 as in MACS 3.1.0.
- Add threads (default 1) to callpeak, predictd, pileup, filterdup,
  randsample, refinepeak, hmmratac and callvar. callvar: deprecate np.
- pileup: detect the input format in R when format = "AUTO", since
  MACS3 pileup rejects AUTO. Add a test for it.
- Add inst/CITATION for the MACS3 paper.
 
Package: BiocDuckDB
Commit: d0fbd4601dda6a4709c728fd51d78989c59ceaf0
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-21 09:13:30 -0700
Commit message:

 fix: add missing sf-signature spatialMatch/spatialJoin methods (0.99.28)

spatialMatch/spatialJoin had no method for a plain sf object. An sf is a
base S3 class (c("sf", "data.frame")), not an S4Vectors::DataFrame, so
the existing DataFrame-signature methods never matched it -- calling
either with a real sf object errored with "unable to find an inherited
method" rather than falling through to anything.

This is purely a missing signature, not an S3/S4 dispatch limitation:
setMethod(generic, c(..., "sf"), ...) dispatches on the class vector
directly, no setOldClass() bridging needed. Fixed by adding
c("DuckDBDataFrame", "sf") for spatialMatch, and both
c("DuckDBDataFrame", "sf")/c("sf", "DuckDBDataFrame") for spatialJoin,
delegating to the same existing DuckDBSpatial calls (which already
handle sf input correctly as of DuckDBSpatial 0.99.8).

Added regression tests for all three new signatures. Full test suite:
0 failures.
 
Package: DuckDBSpatial
Commit: cbe969f207fa3888c910f9c0b6e91896d80a28f4
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-21 09:05:51 -0700
Commit message:

 feat: accept WKT-text geometry columns in st_join/st_join_table (0.99.9)

.as_duckdb_table() (the in-memory materializer backing st_join/
st_join_table's sf/data.frame support, added in 0.99.8) only accepted
sfc or raw WKB geometry columns. MultiAssaySpatialExperiment's own
idiomatic DataFrame shape stores geometry as WKT text instead, the same
single-geometry shape .geom_to_sql() already parses, just never
generalized to a whole column.

Added a character-column branch that parses via sf::st_as_sfc(), same
idiom, scaled up. Along the way, found that st_as_sfc() errors outright
on NA ("missing value where TRUE/FALSE needed") rather than tolerating
it the way the sfg/WKB paths do -- any WKT column with a missing
geometry would have crashed. Fixed by substituting
"GEOMETRYCOLLECTION EMPTY" for NA entries first, matching the same
never-matches-anything semantics already used for the NULL-handling in
the WKB-list case.

Added regression tests for a working WKT column, a column with an NA
entry, and genuinely unparseable WKT text. Full test suite: 0 failures.
 
Package: BiocDuckDB
Commit: a20e4a2e1059183ef7b31c51eec67a149905a7bb
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-21 08:34:55 -0700
Commit message:

 fix: add missing spatialJoin mixed-dispatch methods (0.99.28)

spatialJoin was missing the mixed-type method pair
(c("DuckDBDataFrame", "DataFrame")/c("DataFrame", "DuckDBDataFrame")) that
spatialMatch already has. A call with one out-of-core DuckDBDataFrame
side and one in-memory DataFrame side (in either order) therefore had no
applicable method more specific than MultiAssaySpatialExperiment's own
c("DataFrame", "DataFrame") fallback, which materializes both sides'
geometries fully into memory via st_as_sfc() -- silently defeating the
out-of-core path for exactly the mixed case a caller joining a lazy layer
against a small in-memory one would hit.

Found via user feedback flagging that geometries were still loading into
memory. Fixed by adding the missing method pair, delegating to
DuckDBSpatial::st_join_table()/sf::st_join() the same way the existing
c("DuckDBDataFrame", "DuckDBDataFrame") method does (both already accept
a mixed lazy/in-memory pair as of DuckDBSpatial 0.99.8).

Added a regression test covering both argument orders in
test-spatial-dispatch.R. Full test suite: 0 failures.
 
Package: powerTCR
Commit: c7ebcf8ea7a30f9fc9ba467119cb1a9376cfe389
Author: Hillary Koch <hbk5086@psu.edu>
Date: 2026-10-21 10:50:50 -0400
Commit message:

 update .Rbuildignore
 
Package: powerTCR
Commit: 5b58d3992d9db6e5357fcb9a4c62a0845357cd1d
Author: Hillary Koch <hbk5086@psu.edu>
Date: 2026-10-21 10:47:14 -0400
Commit message:

 remove NOTE caused by LICENSE file
 
Package: powerTCR
Commit: 5ae7861e39b7608e64d534de277f67858fe552e0
Author: Hillary Koch <hbk5086@psu.edu>
Date: 2026-10-21 10:40:12 -0400
Commit message:

 switch from evmix to mev
 
Package: BgeeDB
Commit: b7baee0c68117ed352bc1587ad4547c7874c1a19
Author: Julien Wollbrett <julien.wollbrett@unil.ch>
Date: 2026-10-21 16:39:54 +0200
Commit message:

 bump version
 
Package: BgeeDB
Commit: 1c98a8e994cd9d8fe12c47b735fbc8ce37b439d8
Author: Julien Wollbrett <julien.wollbrett@unil.ch>
Date: 2026-10-21 16:36:57 +0200
Commit message:

 restrict the gene list of topAnat to a background, the protein coding genes by default from Bgee 16, and accept the genes of interest alone
 
Package: BgeeDB
Commit: 8fdebd1cc7617a50aa2537e37f4c7824927a0a64
Author: Julien Wollbrett <julien.wollbrett@unil.ch>
Date: 2026-10-21 16:36:51 +0200
Commit message:

 compute the classic Fisher test of the propagated calls without topGO, with the same results, and move the topAnat classes and their methods to their own files
 
Package: MsBackendMsp
Commit: 32d130465c28afe482902436212bd2db3db53443
Author: Johannes Rainer <5506112+jorainer@users.noreply.github.com>
Date: 2026-10-21 16:18:05 +0200
Commit message:

 Merge pull request #22 from rformassspectrometry/jomain

Improve import speed and add new MspSpectra helper function 
Package: MsBackendMsp
Commit: b728cd6488158c98d5fd9ae73b5ba64db5c6ce51
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-21 16:17:27 +0200
Commit message:

 small fix
 
Package: MsBackendMsp
Commit: 2fa519082ceb0ae93b3c93d2764e3f5f86eec6d5
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-21 15:49:39 +0200
Commit message:

 feat: add MspSpectra function
 
Package: MsBackendMsp
Commit: c8effe7405cfba087ee5c15924f17d2045f7ec74
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-21 15:34:52 +0200
Commit message:

 ci: update
 
Package: MsBackendMsp
Commit: 32753aa725c11106d7ee19ea930efead68e4e600
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-21 15:34:10 +0200
Commit message:

 refactor: improve import speed
 
Package: destiny
Commit: 60d1159385a31e839f471f2d02d24aca1e6eb282
Author: Philipp A. <flying-sheep@web.de>
Date: 2026-10-21 16:14:41 +0200
Commit message:

 all NOTEs
 
Package: destiny
Commit: 2eddbb18096e5a0c16309532d49ee80c34c76b41
Author: Philipp A. <flying-sheep@web.de>
Date: 2026-10-21 16:05:04 +0200
Commit message:

 fix tests with irlba 2.4+
 
Package: destiny
Commit: 01df106eb1f9566a27abdc92c67f3647b24de879
Author: Philipp A. <flying-sheep@web.de>
Date: 2026-09-20 15:38:57 +0200
Commit message:

 chore: full pixi support (#74) 
Package: multipointR
Commit: 6d94ef19f3a7cd5be7060324b1d33edc79d4057e
Author: mjemons <martin.emons@gmail.com>
Date: 2026-10-21 16:01:46 +0200
Commit message:

 version bump
 
Package: multipointR
Commit: e4ac389b777dced1675a4008209a55b05dc27f74
Author: Martin Emons <55688661+mjemons@users.noreply.github.com>
Date: 2026-10-21 14:00:18 +0200
Commit message:

 Memory footprint (#5)

* fast covariance calculation

* fixed dependencies

* fixed bugs

* added test 
Package: RegEnrich
Commit: c0cdec286abb4cce46391da89ba8c9bbe1ca6d69
Author: Weiyang Tao <weiyangtao1513@gmail.com>
Date: 2026-10-21 18:04:19 +0800
Commit message:

 version bump 1.23.3
 
Package: RegEnrich
Commit: c2f4b1be73828e5a9a653d0674c9375b778bc849
Author: Weiyang Tao <weiyangtao1513@gmail.com>
Date: 2026-10-21 17:58:26 +0800
Commit message:

 set eval=FALSE to avoid errors because of unstable internet
 
Package: BreastSubtypeR
Commit: 0e2e4c3735360d31230d510c59c9da4ac3078edf
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-20 19:04:15 +0200
Commit message:

 Merge pull request #179 from JohanHartmanGroupBioteam/fix/178-mapping-max-singleton-na

Preserve singleton gene rows in Mapping(method = "max") 
Package: BreastSubtypeR
Commit: 9220afa23ec692d9997d369a8284296b5af40b33
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-20 18:31:02 +0200
Commit message:

 chore: advance development version to 1.5.9

Official devel remains 1.5.8 and release remains 1.4.1 with no RELEASE_3_24 branch. Apply the author-approved next unused development version; no Bioconductor synchronization.

Prepared with Codex assistance.
 
Package: BreastSubtypeR
Commit: b20e62c5895f8404c6baef4f9ceb4233ad5ad686
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-20 18:30:50 +0200
Commit message:

 docs(mapping): clarify max singleton preservation

Document preservation of remaining NA and NaN measurements in singleton max groups and record issue #178 in development NEWS. Historical 1.5.8 notes remain unchanged.

Prepared with Codex assistance.
 
Package: BreastSubtypeR
Commit: 3a44af75d2a0e16615b0cabac0cfa0a7c5f5ef73
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-20 18:30:42 +0200
Commit message:

 fix(mapping): preserve singleton rows for max selection

Keep singleton measurements unchanged while retaining the existing max calculation for groups with multiple probes. Add focused regression and preservation tests for issue #178.

Prepared with Codex assistance under the author-approved singleton-preservation scope.
 
Package: BreastSubtypeR
Commit: 0251efd3310b04315718f426034b0eb2c7c3c2d8
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-20 11:14:37 +0200
Commit message:

 Merge pull request #175 from JohanHartmanGroupBioteam/docs/readme-build-badges-20261020

Clean up Bioconductor build badges in README 
Package: BreastSubtypeR
Commit: a2e2d3a2f0c8cc0070a119c2225d312d5ecd5050
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-20 10:52:36 +0200
Commit message:

 docs(readme): remove external Bioconductor badge labels 
Package: igblastr
Commit: 9074537345da2f0160f6487f3dafc95ad3e9c4a9
Author: Hervé Pagès <hpages.on.github@gmail.com>
Date: 2026-10-20 22:56:12 -0700
Commit message:

 igblastr 1.3.24

o install_OGRDB_germline_db() now supports new OGRDB organism Peromyscus
  leucopus (White-footed mouse).

o Complete install_OGRDB_germline_db() man page.

o Add extract_alleles_from_ogrdb_json() utility.

o Add extensive tests for download_OGRDB_germline_sequences().
 
Package: VISTA
Commit: 0804d80863ff4a7a327afe374480f26ecdd93b5d
Author: Chirag Parsania <chirag.parsania@gmail.com>
Date: 2026-10-21 15:42:12 +1100
Commit message:

 Bump to 1.1.6: independent equivalence check, edgeR QL option, tximport fixes

Verification
- benchmark_vista_equivalence() now compares VISTA with reference
  DESeq2/edgeR/limma pipelines that share none of VISTA's code, matched by
  identifier; a test enforces the separation, and injected defects in
  VISTA's own helpers must be reported.

edgeR
- New edger_test = c("LRT", "QL") in create_vista(), run_edger_analysis(),
  benchmark_vista_equivalence() and validate_vista_deep(). LRT stays the
  default; calls that rely on it get a notice that QL becomes the default
  in VISTA 1.4.0 (see ?VISTA-deprecated). The test used is recorded in
  cutoffs(v)$edger_test and in the report.

Bug fixes
- Untested genes were stored with pvalue = 1; they keep the engine's NA.
- Filtering a consensus table on padj returned the union in intersection
  mode.
- DEG-count plots dropped comparisons with no DEGs.
- limma MA plots used log10(log2-CPM + 1) on the x axis.
- An explicit intercept in design_formula survived for edgeR and limma.
- tximport abundance/length could be imported as counts; unscaled tximport
  counts are now converted to lengthScaledTPM (matching tximport), with
  tx2gene summarised as summarizeToGene() does.
- DESeq2 now accepts estimated counts, rounded after a shared filter.
- Negative values are refused; exact TPM/CPM or log-scale input warns.
- RSEM TPM/FPKM columns could be imported as counts.

Also: provenance records VISTA, R and engine versions; the code-economy
vignette computes its tallies; docs and NEWS updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: lisaClust
Commit: ff5cefd9bfc244daaa1701cfe7f9e752a3502961
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-21 06:40:33 +1100
Commit message:

 1.21.9: lisa() and lisaClust() take cellWeights (a vector of cell weights or a soft cell type membership matrix), in the shared core

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: spicyR
Commit: 7010b892ad3b670ea0c9d305bfad34b354c0146d
Author: EllisPatrick <ellis.patrick@sydney.edu.au>
Date: 2026-10-21 06:40:39 +1100
Commit message:

 1.99.32: cellWeights (a vector of cell weights or a soft cell type membership matrix) in spicy(), kontextualEngine() and getPairwise(); weighted random-labelling sums in the core

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sjhuCgL8kii1snyas2Aj8
 
Package: plyxp
Commit: 7ffccf79d670b59be2ff6e5f4a0bfbb8739f984c
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 17:48:24 -0400
Commit message:

 version bump
 
Package: plyxp
Commit: 5dbc9b82da33bfb44f9b3c6c93f2ec649782538a
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 17:47:33 -0400
Commit message:

 After testing, I remembered that .assays is reserved in masks...
 
Package: plyxp
Commit: 68493c8a38797155cd3ed517f4f0cfab37152469
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 17:34:07 -0400
Commit message:

 Update DESCRIPTION
 
Package: plyxp
Commit: d07a8a2fa80653acdfc7b76536ece393812b186e
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 17:33:38 -0400
Commit message:

 Speedup optim 5: dont walk names twice, call both functions in each
iteration
 
Package: plyxp
Commit: da64def46bc818af4d313a70791a888af4c03ed5
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 17:01:12 -0400
Commit message:

 Speedup optim 5: `enexpr` is slow, but I believe we are always passing
in a quoted value, thus this is redundant.... I think
 
Package: plyxp
Commit: 9b150a3cbfc487c40570abb0bf10424c68b2351d
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 16:59:52 -0400
Commit message:

 speedup optim 4: plyxp_group_ids2 uses `[[` alot, convert object to list
for faster operator
 
Package: plyxp
Commit: e6be03521fed0ebfdd0c2bd114335ed9213f5210
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 16:59:01 -0400
Commit message:

 speedup optim 3: expand_groups2 is slow due to appending new values, use
df0 on fully constructed list
 
Package: plyxp
Commit: a3701adae3a6fc85b205bd3b0e8076729da47cf5
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 16:58:05 -0400
Commit message:

 speedup optim 2: calling tibble is slow - construct raw data.frame with
`df0`
 
Package: plyxp
Commit: b82d5ded7a33d2e9cf291106a4035ee959b54673
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 16:56:37 -0400
Commit message:

 speedup optim 1: dont use `withDimnames = TRUE` default...
 
Package: plyxp
Commit: cc25b97a95c6bb77a0e6b2aa170122cc21fc1d06
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:57:34 -0400
Commit message:

 testing various parts of the S4 vctrs interface
 
Package: plyxp
Commit: 77056e837e74b07794dcc2af2887ed9efb10cbca
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:56:33 -0400
Commit message:

 air syntax format
 
Package: plyxp
Commit: 8ab722650239613f4bfc9870eadaa4ab4ddb5d41
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:56:17 -0400
Commit message:

 work in progress
 
Package: plyxp
Commit: 9bbc42353d9efc2cadbdcf0dccb86987f530ee88
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:55:47 -0400
Commit message:

 vctrs-S4-cast could be better. We could try to register methods from the
default system if it exists...
 
Package: plyxp
Commit: cb8e6dd4a9b6934705342d3fbaf8cc43d9df9855
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:40:25 -0400
Commit message:

 ensuring active bindings are read only
 
Package: plyxp
Commit: 20e05ec67ef0335f6f15afb2aa01f1e2211f2e62
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:40:04 -0400
Commit message:

 vec_phantom is used in printing, for code cov
 
Package: plyxp
Commit: cb5f3c3e28285c002e684b801c86e9948759d2da
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:39:30 -0400
Commit message:

 testing different branches of simple slice
 
Package: plyxp
Commit: 7de2cf311855f9b374f16f04c143f3a574f9d7d8
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-20 12:39:16 -0400
Commit message:

 Test we can rename rows and cols with mutate
 
Package: plyxp
Commit: bf4e556103d7ef07888f0a2fb912768f172d25e8
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:52:06 -0400
Commit message:

 Forgot to commmit these tests
 
Package: plyxp
Commit: 1a0278cdb13b3285ef0f9228c4ed6625b8a7862e
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:51:48 -0400
Commit message:

 many random tests for S4Vectors and vec_* generics
 
Package: plyxp
Commit: 2c870861c690f567c94d71f5cb6d87cbc4462911
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:51:14 -0400
Commit message:

 had a typo
 
Package: plyxp
Commit: a3ac3536275739f6df9678496d523d2a908e0a84
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:45:40 -0400
Commit message:

 various tests for standard methods
 
Package: plyxp
Commit: 2adcfae841e08d475c34e65a2b306ff86bc7fa66
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:45:02 -0400
Commit message:

 misc
 
Package: plyxp
Commit: 6717cafccb569df8ac864ad569467457f05e4691
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:44:13 -0400
Commit message:

 Update test_printing.R
 
Package: plyxp
Commit: 22766c9652ece26e1553ae839cb2a94b997c12a5
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:44:03 -0400
Commit message:

 Update test_S4_list_unchop.R
 
Package: plyxp
Commit: 2a2aa80ba0ce261de5b5f647ff5deacf2a251c7a
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:43:43 -0400
Commit message:

 found bug in standard assignment, testing that binding values works as
expected
 
Package: plyxp
Commit: 83d42571797e35260156691c157eea153596d267
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:42:33 -0400
Commit message:

 taking inspiriation from biocmask side project
 
Package: plyxp
Commit: 3b94753a5ee2a7b903cebfaca7eca9a909500b2e
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:42:03 -0400
Commit message:

 improving slicing indices
 
Package: plyxp
Commit: 784a8c4aa1e0822a9e017f205ecd9459ad663dd6
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:41:42 -0400
Commit message:

 This is not yet needed and was not much used
 
Package: plyxp
Commit: 0045199afec9827423684e92c4b70f232862873e
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:40:32 -0400
Commit message:

 these sets of functions were removed a while ago
 
Package: plyxp
Commit: a5bd1f635f0517cdc7b1de827827717033599e7a
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-18 15:40:12 -0400
Commit message:

 logical bug, missing argment. testing other branches
 
Package: plyxp
Commit: 7c789a15e6978ce2a2c95a53330c6fc2ed177588
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:53:08 -0400
Commit message:

 Update vctrs-S4-chop.R
 
Package: plyxp
Commit: 94cba9a50e8c84104b602d13a2fbc6e9fccd26b7
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:51:47 -0400
Commit message:

 testing error paths
 
Package: plyxp
Commit: 8bf91f908539cc06fc3786efa5e024608705e02b
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:51:33 -0400
Commit message:

 never test the branch of no args or just columns
 
Package: plyxp
Commit: 1325abef420d629ad24f460bd4247744d3a337e6
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:51:00 -0400
Commit message:

 Many more group tests, including group_split
 
Package: plyxp
Commit: 5c2dd525c47db107226c9b0886ca99a7eb79764b
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:50:37 -0400
Commit message:

 testing that we can rename content
 
Package: plyxp
Commit: 739a232abe1f8a43bb31eb309ffa280944914d93
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:50:15 -0400
Commit message:

 testing peek_ctx and poke_ctx. So far not used too often. questioning
its relevance
 
Package: plyxp
Commit: cbae63bb23da382ab7fb9026ff69e41889aa4a24
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:49:39 -0400
Commit message:

 vec_init and vec_cast are not yet exported. This may need to change -
however the base amount of support seems to be working.
 
Package: plyxp
Commit: 146d214263f04665f348e557fdf462686891100d
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:47:25 -0400
Commit message:

 Unused at the moment
 
Package: plyxp
Commit: 1418437b1a797a84a3da604525a1730159a9d6c3
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-16 15:42:19 -0400
Commit message:

 fixing build to use BiocGeneric functions
 
Package: plyxp
Commit: 9af43ed597d82d0d490b7adad67622cc8a76fb75
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 17:38:01 -0400
Commit message:

 Update test_plyxp_utils.R
 
Package: plyxp
Commit: 7b9abb33f51c2098b9ce15ff9e1629e6c44a6dd8
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 17:26:36 -0400
Commit message:

 edit plyxp_evaluate to remove `nams` argument. It was unused for a long
time.

Also adding common plyxp_quo helper functions
 
Package: plyxp
Commit: 97645ad9b8e9fe9576e8b5e5fb52af2c36ce865f
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 15:49:04 -0400
Commit message:

 Revert 'some work'...

This commit reverts 23cdc8aebed7950d7f85865041d91f0bfbebdfb6

prior commit implements col_data/row_data generics for internal use. Not
ready for devel/bioc
 
Package: plyxp
Commit: 1d16f710889670d5800bbf18301ccfe005ad5754
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 15:42:47 -0400
Commit message:

 testing plyxp_on()
 
Package: plyxp
Commit: 517aff791cbe5f14a7afb43c6b3c5f3d21457d66
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:21:17 -0400
Commit message:

 formatting
 
Package: plyxp
Commit: 3996c87fb0c4d6a3212e02211b884f4d8f730a92
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:21:11 -0400
Commit message:

 Update NEWS
 
Package: plyxp
Commit: a9a50f87b248783922fc97d3e83e2ff36d34235b
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:11:10 -0400
Commit message:

 shouldnt have used roxygen tag here...
 
Package: plyxp
Commit: 5e2ebb641e46b0a2227fc137d6285f4d99126a5d
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:10:33 -0400
Commit message:

 More tests for test coverage and no errors. Can improve these more later
 
Package: plyxp
Commit: ccf0b7e5521f05278ce6a6fbaceafde085a49c8f
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:09:30 -0400
Commit message:

 Allow new quosure to mimic its parent quosure transform value
 
Package: plyxp
Commit: 8e03a4a19f54a269dcf0c4a7ca85fc4e7626c4f9
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:09:00 -0400
Commit message:

 switching on incorrect value.
 
Package: plyxp
Commit: d74d57252dfd828523236d3587710642a789e4c4
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:08:28 -0400
Commit message:

 air formatting
 
Package: plyxp
Commit: 633620510ed7618380e4192abeebe0c280665fae
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-15 00:07:47 -0400
Commit message:

 some additional test coverage
 
Package: plyxp
Commit: a52ff181b3f43b75ef0a6e387cc4ecbf7358252a
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 23:38:48 -0400
Commit message:

 plyxp_quos defaults to exclude empty. ungroup now retains empty quos and
has granular behavior
 
Package: plyxp
Commit: 184141d57b6900663bf6324549c575b76ea42009
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 21:33:59 -0400
Commit message:

 tests and reformat news
 
Package: plyxp
Commit: c045fd2f86d33fca791f0cba38aa3305c8d2f5df
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 21:31:06 -0400
Commit message:

 enabled .features and .samples as grouping options
 
Package: plyxp
Commit: 14c057bc78fabceb7acc3e603a7b275c2a0edbdd
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 21:07:28 -0400
Commit message:

 found a bug! `.add` should work now
 
Package: plyxp
Commit: 340e8b3bc182153c42b0e1883acd7cdc04d95208
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 20:24:21 -0400
Commit message:

 An unused function. It should be removed soon
 
Package: plyxp
Commit: d08b5d733812d6c87b4cfabb8f8407c155946deb
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 15:04:29 -0400
Commit message:

 likely wont be used, commenting out
 
Package: plyxp
Commit: 3ee7af20527e744106e1c26ef364254d54203961
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 15:04:18 -0400
Commit message:

 small refactor
 
Package: plyxp
Commit: 866829a4043c6ec949d9bf428a134a53474357a7
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 15:03:57 -0400
Commit message:

 formatting
 
Package: plyxp
Commit: 642a8c14332f74a12d0292d740bb4f1de04c33b0
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 15:02:32 -0400
Commit message:

 enforce_matrix() is no longer needed. replaced with enforce_2d_size()
 
Package: plyxp
Commit: d64dc0c462ef66502e78862d325aaaf549ec658f
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 15:01:03 -0400
Commit message:

 with 0c648906b39c3f5426f4311ec6f3cac357573143, we changed how
environments were made available.
 
Package: plyxp
Commit: efe3285fb00d625f652f9ddd9c71e8f9808a1322
Author: jtlandis <jtlandis314@gmail.com>
Date: 2026-10-14 14:59:01 -0400
Commit message:

 this function is no longer used, it was inlined to .bind_self
 
Package: gDRcore
Commit: 52202c8b93fb0f362b5c3283db5a39f0a2778b71
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-20 22:49:54 +0200
Commit message:

 Merge pull request #217 from gdrplatform/GDR-3718

test: fit co-dilution experiments through the pipeline and on refit 
Package: gDRcore
Commit: b4af88170a9502f9b4e1beb7dbf1db994952ecad
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 21:27:25 +0200
Commit message:

 Merge remote-tracking branch 'origin/main' into GDR-3718

# Conflicts:
#	NEWS.md
 
Package: gDRcore
Commit: 1d98dfb55604dbce2091c1f16842eecf13a02edd
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 16:49:02 +0200
Commit message:

 test: check that a refit replaces the stored processing metadata
 
Package: gDRcore
Commit: 607e4da4ef5041dfae451317aff66c1f16eb143c
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 17:24:59 +0200
Commit message:

 chore: update the package date
 
Package: gDRcore
Commit: 4cecb033b9e5c1057ea28832ab2d1a412d14da79
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 09:46:18 +0200
Commit message:

 test: fit co-dilution experiments through the pipeline and on refit
 
Package: gDRcore
Commit: 8a25f099eb15bb972168dfb3563b5db929491309
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-20 21:26:17 +0200
Commit message:

 Merge pull request #216 from gdrplatform/GDR-3586

fix: restore CIScore_50/80 and the single-agent arm fit for combinations 
Package: gDRcore
Commit: c0bca21388e5d0a8923c78e6f8f7a2009a4bf76a
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-20 16:48:58 +0200
Commit message:

 perf: read CIScore from the isobolograms in one grouped pass
 
Package: gDRcore
Commit: 9a23e3df2a382259c156db9d8f230484d6e63ce7
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 17:24:59 +0200
Commit message:

 chore: update the package date
 
Package: gDRcore
Commit: de83ea423f009d15ca82128dfe2b3d7a367b4d71
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 08:54:50 +0200
Commit message:

 fix: restore CIScore_50/80 and the single-agent arm fit for combinations
 
Package: gDRutils
Commit: 95cc0ac7b301580467a58c199d647116d5a0a25c
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-20 21:24:24 +0200
Commit message:

 Merge pull request #207 from gdrplatform/GDR-3718

fix: add a co-dilution fit profile and allow refitting a processed SE 
Package: gDRutils
Commit: 6886f232b269da20794fd9965ea0903fd190aa55
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 17:24:58 +0200
Commit message:

 chore: update the package date and the changelog entry
 
Package: gDRutils
Commit: 6e015a81c2f1895b7fa56ffecaff34a966066ee2
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 09:45:53 +0200
Commit message:

 fix: set SE metadata over an entry that holds a sessionInfo
 
Package: gDRutils
Commit: d9a847c6576794014d4ef253a31e89ae5207d4d0
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-19 09:45:53 +0200
Commit message:

 fix: add a co-dilution fit profile
 
Package: methylclock
Commit: 665c17d786a3dfd1910fe2a4d752867dc62e3cc9
Author: dpelegri <43083225+dpelegri@users.noreply.github.com>
Date: 2026-10-20 20:33:26 +0200
Commit message:

 bump version to 1.99.4
 
Package: methylclock
Commit: 791d7cab7b41196b9b92e8a5a6dde14ec3da69df
Author: dpelegri <43083225+dpelegri@users.noreply.github.com>
Date: 2026-10-20 20:33:13 +0200
Commit message:

 State telomere length unit and NEOage tissue

The clock catalog now states that the TL clock estimates telomere length in kilobases, the unit of the terminal restriction fragment measurements it was trained on (Lu et al. 2019). The four NEOage rows describe their training tissue as "buccal epithelium (preterm infants)", matching the PedBE wording. Catalog regenerated; no computational change.
 
Package: DuckDBSpatial
Commit: 036c2d9d7462258dcb129e64a45dbecb312c22ef
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-20 11:04:21 -0700
Commit message:

 feat: accept in-memory sf objects in st_join/st_join_table (0.99.8)

st_join.DuckDBTable/st_join_table only accepted lazy DuckDBTable/
DuckDBDataFrame objects for x/y. Closes a real gap flagged by a user
comparing against duckspatial::ddbs_intersects(), which accepts sf
objects on either side.

New internal .as_duckdb_table() materializes an in-memory sf object (or
a data.frame with an sfc or raw-WKB-list geometry column -- the latter
matching the shape as.data.frame() on a DuckDBDataFrame's own geometry
column produces) by converting its geometry to WKT (the same idiom
.geom_to_sql() already uses for a single geometry), copying it into a
temp DuckDB table via copy_to(), then casting back to native GEOMETRY
with ST_GeomFromText(). Temp-table naming reuses DuckDBArray's
PID+counter convention to avoid the dbplyr::unique_table_name()
global-RNG collision class fixed there in 0.99.9. Chosen over
writeGeoParquet()+tempfile since that would pull in nanoparquet as a
hard dependency and add disk I/O for what's typically the small side of
a join.

Three independent review passes (two rounds, four reviewer agents total)
caught and fixed real problems before this shipped:
- The redirect errors added to .geom_to_sql() pointed at spatialMatch()/
  spatialJoin(), which don't exist in this package (those are
  BiocDuckDB-level MultiAssaySpatialExperiment methods) -- corrected to
  layerSpatialMatch(), st_join(), and st_join_table().
- .as_duckdb_table()'s raw-WKB branch crashed on any NULL entry (the
  common case of a DuckDBDataFrame's own geometry column, which
  represents missing geometries as NULL), since sf::st_as_sfc.WKB()
  asserts every element is raw with no NULL tolerance. Fixed by
  substituting an empty geometry per NULL entry, wrapped in the same
  tryCatch-to-friendly-error pattern writeGeoParquet() already uses.
- Hardened the generated ST_GeomFromText("") SQL against a geometry
  column name containing a literal double quote.

Also removed .spatialMatch_sql()'s dead else branch (DuckDBDataFrame-
spatial.R): it attempted the same DuckDBDataFrame(as.data.frame(table))
call that didn't actually work, but its only caller (layerSpatialMatch())
never reaches it with a non-DuckDBTable table, taking a separate
in-memory sf::st_intersects() path instead -- unreachable, untested dead
code.

Added regression tests for all of the above, including sf-on-either-side
joins, the NULL-geometry fix, and the corrected error-message text. Full
test suite: 0 failures.
 
Package: BiocDuckDB
Commit: b2a9c29347875328747406aca3cf208872431a75
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-20 09:31:36 -0700
Commit message:

 fix: correct spatialJoin's sparse path for two out-of-core DuckDBDataFrames (0.99.27)

spatialJoin(DuckDBDataFrame, DuckDBDataFrame) with its default
sparse = TRUE called DuckDBSpatial::st_intersects_table(x, y), which only
ever accepted y as a single scalar geometry (sfc/sfg/WKT) -- it has no
case for another lazy table. It always errored with "unsupported
geometry type: DuckDBDataFrame" when both sides were out-of-core,
defeating the whole point of the sparse, stay-lazy path (the
sparse = FALSE branch, a full attribute join via sf::st_join(), already
worked fine). It also silently ignored the join= predicate argument on
this branch regardless.

Fixed by switching to DuckDBSpatial::st_join_table() (new in DuckDBSpatial
0.99.8), a real two-table SQL join producing a sparse (id_x, id_y) pair
table instead of embedding y as a literal, which also correctly threads
join= through this time.
 
Package: DuckDBSpatial
Commit: 847fc37dd8b70a61f7aafb7f6d6266031b720499
Author: Patrick Aboyoun <aboyoun.patrick@gene.com>
Date: 2026-10-20 09:16:22 -0700
Commit message:

 feat: add st_join_table for sparse joins between two lazy spatial tables (0.99.8)

st_intersects_table() only ever supported testing x against a single
reference geometry -- its y goes through .geom_to_sql(), which has no
case for another lazy table -- so there was no way to get a sparse match
table between two out-of-core layers short of materializing the full
attribute join via st_join(). This blocked spatialJoin(DuckDBDataFrame,
DuckDBDataFrame) in BiocDuckDB, whose sparse=TRUE branch called
st_intersects_table(x, y) and always errored with "unsupported geometry
type: DuckDBDataFrame" when both sides were out-of-core.

Added st_join_table(x, y, join = st_intersects, sparse = TRUE), modeled on
the existing st_join.DuckDBTable: same INNER JOIN ... ON (...)
approach and the same .st_predicate_sql_name() mapping to honor join=,
but projecting a sparse (id_x, id_y) row-pair table instead of full
attributes.
 </pre>
    </div>
  
    
Package: CEMiTool
Commit: 325dddd3fc11c4c18eec095ae1f968aedf561f40
Author: Pedro Russo <pedrostrusso@gmail.com>
Date: 2026-10-20 09:06:05 -0300
Commit message:

 Version bump
 
Package: CEMiTool
Commit: 3630f2a726ec1e290cb6558ad40802ded423bfb9
Author: Pedro Russo <pedrostrusso@gmail.com>
Date: 2026-10-20 09:02:13 -0300
Commit message:

 Mirroring changes in master to devel
 
Package: OmnipathR
Commit: 9ce957c453451091c2d2ac65a94746c5b8a95b5e
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-20 12:23:32 +0100
Commit message:

 Bump version: 4.1.0 → 4.1.1
 
Package: OmnipathR
Commit: 644c8a1280a5ec8cf7dc75713af05ab06a3a5fbe
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 02:45:11 +0100
Commit message:

 NEWS for 4.1.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 730cb57407b77a3095252f681d6d577c372a910c
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 02:44:37 +0100
Commit message:

 CITATION: ASCII quotes, so that readCitationFile() reads it

BiocCheck reads the file without a declared encoding and gives a
warning for non-ASCII characters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 4af5333194c429fd99ff19faf24580ad7fdd34be
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 00:54:40 +0100
Commit message:

 docs rebuild

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: ee5ad33716fbe7738990c52ef86c9a36cef67783
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 00:54:40 +0100
Commit message:

 resources: use a cached resource list for one hour at most

Resources are added to and removed from the server often, so a resource
list older than one hour is downloaded again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: f57ef9609c83810a158c54113184b0dac6fee2f4
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 00:54:40 +0100
Commit message:

 omnipath_cache_remove: max_age and min_age remove only the matching versions

When status was not given, the version filter kept no version at all, so
omnipath_cache_remove(max_age = 30) emptied the whole cache instead of
removing what is older than 30 days. Without status, versions of any state
are now kept. The manual now describes status as it works: the states to
keep.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: e561784371addd03657df181fdee1e7ca01c3425
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 00:11:42 +0100
Commit message:

 Live web service tests do not run on Bioconductor build machines

A short outage of the OmniPath web service must not fail the Bioconductor
build. Other machines, our daily build server included, still run them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: c714f9dfb8f66191bf12582ded0e6a7946a53518
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-13 00:11:42 +0100
Commit message:

 resources: download with retries and cache, fix category filter

resources() read the resource list with readLines(), with no retry and no
cache, on every query that names resources. One failed connection failed
the query. It now uses the package downloader, like the other functions.
The generic_categories argument looked for a key that the service does not
send, so it always gave an empty result. It now reads the key categories.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: ba43e096a988ee4d47955a66313c8ad09ccc411d
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-12 23:08:14 +0100
Commit message:

 docs rebuild

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 38528ff92def0e4d302c75e931c6caf14321e1df
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-12 23:08:14 +0100
Commit message:

 Runnable examples for 29 more manual pages

Examples of functions that download data run again: on build servers these
functions return early, so the examples stay fast. Small offline helpers
have new examples. The cache and configuration examples work on a temporary
directory, and never change the user's cache or configuration.
wikipathways_metabolites_sparql() returns early on build servers like the
other download functions. The show_network() example calls show_network().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 8907449f2bb545a0288ddc3d7a295544ab55f5f0
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-12 23:08:14 +0100
Commit message:

 subnetwork: select the vertices with V(), add examples to graph helpers

subnetwork() called igraph_vs(), which does not exist, so the function
failed on every call. It now selects the given nodes with V(), or all nodes
when none is given. ensure_igraph(), subnetwork() and graph_interaction()
have offline examples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 466c2a7025d7723bfa2bfba0fd3126581becf1fa
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-12 23:02:28 +0100
Commit message:

 Vignettes build when a third-party server does not answer

Chunks that download from g:Profiler, UniProt, the OBO Foundry or a
publisher show the error instead of stopping the vignette build. The text
next to each such chunk tells the reader why the output can be missing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 9c6de4f542099aeb253f1c25b85fa68239d42c01
Author: deeenes <turei.denes@gmail.com>
Date: 2026-10-12 23:01:20 +0100
Commit message:

 Build-server detection also reads OMNIPATHR_BUILDSERVER

A local R CMD check under any user can now skip the slow examples the same
way as the Bioconductor and Saez Lab build servers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: a7c05f9a876c08a8e0e33d9c32a930fbf2cf3491
Author: jannikfranken <Jannik8513@gmail.com>
Date: 2026-09-30 15:34:36 +0200
Commit message:

 `oma_organisms`: robust to header changes, re-download malformed cache

OMA now serves its species table from Zenodo with 5 comment lines and a
column header row instead of 3 comment lines. The hard-coded `skip = 3L`
made readr return a single column table, without `ncbi_tax_id`, which
broke the organism name translation (`taxon_name`, `latin_name`, etc.).

Now all lines starting by "#" and the header row are removed, the columns
are read with fixed names and types, and the result is validated. If the
table is malformed (e.g. a previously cached bad parse), the cache entry
is removed and the file is downloaded again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: OmnipathR
Commit: 5897de4085b65dd462b4da5fcdfce7b7cea20883
Author: jannikfranken <Jannik8513@gmail.com>
Date: 2026-09-28 16:29:02 +0200
Commit message:

 KEGG: use list/genome, the list/organism endpoint returns 400

The KEGG REST endpoint `list/organism` has been retired and now fails
with HTTP 400. This broke `kegg_organisms()`, `kegg_organism_codes()`
and, through the argument validation in `kegg_query()`, any KEGG call
that checks organism codes (e.g. `kegg_conv("compound", "pubchem")`).

- `kegg_request()` now transparently requests `list/genome` whenever
  `list/organism` is asked for, so `kegg_list("organism")`,
  `kegg_request("list", "organism")` and `kegg_organisms()` work again.
- New internal `kegg_genome_to_organisms()` reshapes the two column
  output of `list/genome` ("T01001", "hsa; Homo sapiens (human)") by
  splitting the second field on "; " into `kegg_name` and `latin_name`.
- Removed the obsolete `list/organism` entry from `KEGG_COLUMNS`.
- Updated the `kegg_list()` docs to the new return shape.

Breaking change: the organism table now has 3 columns (`genome`,
`kegg_name`, `latin_name`) instead of 4. The `phylogeny` column is
dropped, as `list/genome` does not provide it; nothing in OmnipathR
used it. The code remains in the 2nd column, so `kegg_organism_codes()`
is unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: MetaboCoreUtils
Commit: 3f40f43f37002a0deee0715af1edb2294ddfc78d
Author: Johannes Rainer <5506112+jorainer@users.noreply.github.com>
Date: 2026-10-20 11:37:37 +0200
Commit message:

 Merge pull request #89 from rformassspectrometry/jomain

feat: add parameter nomatch to translate() 
Package: MetaboCoreUtils
Commit: 9077c8175e5a34cb47b7d67841365ffd42b325d0
Author: Johannes Rainer <johannes.rainer@gmail.com>
Date: 2026-10-19 07:24:21 +0200
Commit message:

 feat: add parameter nomatch to translate()

- Add parameter `nomatch` to the `translate()` function to configure the
  behaviour if a name could not be translated/matched. Add also parameter
  `warning` that allows to disable warning messages.
 
Package: geneslator
Commit: e7b7161780f2f622eb3614cec05e012af3eca3c6
Author: GMicale <gmgmicky@gmail.com>
Date: 2026-10-20 11:08:31 +0200
Commit message:

 Updated README
 
Package: geneslator
Commit: 10aae9e9cbacd29d346b4d6d0f473a4342a6b05c
Author: GMicale <gmgmicky@gmail.com>
Date: 2026-09-24 19:19:39 +0200
Commit message:

 Merge branch 'main' of github.com:knowmics-lab/geneslator
 
Package: geneslator
Commit: b825a4f5fb156f01fad889fcde03b9f0e6f71f77
Author: Giovanni Micale <gmgmicky@gmail.com>
Date: 2026-09-04 17:10:34 +0200
Commit message:

 Update README.md 
Package: biomaRt
Commit: ba00684e7d8282b927ea8d650f96d218483d6ce4
Author: Hugo Gruson <git@hugogruson.fr>
Date: 2026-10-19 09:38:41 +0200
Commit message:

 Bump version
 
Package: biomaRt
Commit: 3d1eaf5520af3e09583664594fe28d9d309b77d9
Author: Hugo Gruson <git@hugogruson.fr>
Date: 2026-10-19 09:53:09 +0200
Commit message:

 Use fetch = FALSE in vignette as well
 
Package: biomaRt
Commit: f88dd09c86169861e243b5cc6f958fa3de6c6a1c
Author: Hugo Gruson <git@hugogruson.fr>
Date: 2026-10-19 09:38:26 +0200
Commit message:

 Avoid hits on ensembl latest release
 
Package: gDR
Commit: c98efa763cefe1baa5946a5187791a139f363210
Author: Arek Gladki <41166437+gladkia@users.noreply.github.com>
Date: 2026-10-20 09:45:05 +0200
Commit message:

 Merge pull request #70 from gdrplatform/GDR-3728

fix: show one legend per page in the Incucyte analysis report 
Package: gDR
Commit: 8ebe3144c8670a34c1df3718b45b412ec6e26c3a
Author: Arkadiusz Gladki <gladki.arkadiusz@gmail.com>
Date: 2026-10-19 13:38:58 +0200
Commit message:

 fix: show one legend per page in the Incucyte analysis report
 
Package: limma
Commit: 595fd2c4d7fe23168182dfbc4486eea5bc4cb8ae
Author: Mikael Jagan <jaganmn2@gmail.com>
Date: 2026-10-20 00:17:02 -0400
Commit message:

 no longer using methods-internal class
 
Package: geNetClassifier
Commit: 781ddcfba595cc5f3076c88257eaeda45ec44553
Author: Mikael Jagan <jaganmn2@gmail.com>
Date: 2026-10-20 00:07:58 -0400
Commit message:

 no longer using methods-internal class
 
Package: S4Vectors
Commit: 904dc54db14b1e9fa111e3d9e66ba135f5911b7a
Author: Mikael Jagan <jaganmn2@gmail.com>
Date: 2026-10-20 00:00:23 -0400
Commit message:

 no longer using methods-internal class
 
Package: Category
Commit: adc36989fed922abd0e34197565f79bf1c4d3b6e
Author: Mikael Jagan <jaganmn2@gmail.com>
Date: 2026-10-19 23:29:27 -0400
Commit message:

 no longer using methods-internal class
 
Package: igblastr
Commit: 0b6fab6efd2a12a47d93c25b47514454c848fb44
Author: J. Kim <juyeongkim@users.noreply.github.com>
Date: 2026-09-18 13:27:26 -0700
Commit message:

 Build and push docker image for igblastr (#12)

* Build and push docker image for igblastr

* Ignore `RELEASE_3_22` branch 
Package: sesame
Commit: c304730fac5a4e97e8e15028f94c6fad56b435ef
Author: Wanding Zhou <zhouw3@email.chop.edu>
Date: 2026-10-19 16:50:17 -0400
Commit message:

 1.31.7: heatmap annotation tracks (zwdzwd/sesame#220), follow-up fixes

#220 (Pancreas-Pratik) adds CpG-context and Ensembl Regulatory Build tracks
under the visualizeRegion() heatmap, built on first use and cached in
BiocFileCache; biomaRt is in Suggests and needed only for the regulatory
track. On top of the merge:

- @param for show.cgi, show.regulatory, show.beta.legend and
  show.annotation.legend, which R CMD check flagged as undocumented.
- NAMESPACE regenerated by roxygen; imports and exports are unchanged.
- A plain visualizeRegion() call is silent again: it no longer prints
  "Heatmap annotations not requested."
- sesameAnno_buildHeatmapAnnotations() checks for biomaRt before reading
  the manifest, so a missing package fails before any download.
- The regulatory legend title is "Ensembl Regulatory Build Feature" in
  every layout; the beta legend label takes sample.name.fontsize instead
  of an empty argument.

R CMD check: 0 errors, 0 warnings (R 4.6.0, sesameData 1.31.1).
 
Package: sesame
Commit: 4109d7d99b167166552359313c46adeed4c15559
Author: Wanding Zhou - Bioinformatics <zhouwanding@gmail.com>
Date: 2026-10-19 16:21:20 -0400
Commit message:

 Merge pull request #220 from Pancreas-Pratik/devel

Add heatmap annotations to visualizeRegion 
Package: sesame
Commit: 522b2e9ba7538a63310eb93c77c3cce5d0b6c385
Author: Pratik Mehta <pratikmehta00@gmail.com>
Date: 2026-09-23 15:08:28 -0400
Commit message:

 Address review comments: add CpG and Ensembl regulatory heatmap annotations
 
Package: sesame
Commit: 57926125eada5b3a774742008532e6d511051212
Author: Pratik Mehta <pratikmehta00@gmail.com>
Date: 2026-09-20 10:27:18 -0400
Commit message:

 Add heatmap annotations to visualizeRegion
 
Package: BreastSubtypeR
Commit: 67d982cb324ec376ea599929eb41837a50fd09b3
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 14:43:28 +0200
Commit message:

 Merge pull request #174 from JohanHartmanGroupBioteam/fix/prepublication-review-1.5.8

Correct clean-session Shiny behavior and clarify unpublished 1.5.8 maintenance findings 
Package: BreastSubtypeR
Commit: 840b190524d989a7f9c2aaa7cf43888196ec5822
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 11:11:44 +0200
Commit message:

 Clarify maintenance provenance and remove unused plotting dependency
 
Package: BreastSubtypeR
Commit: 0ec9682928dc81edb090e624cdc8fc50f0afc5b8
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 10:58:31 +0200
Commit message:

 Represent undefined additional ROR-PC categories as missing values
 
Package: BreastSubtypeR
Commit: 647e5c9f5b8d9f779e27baddb274fc93e14a8b75
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 10:56:00 +0200
Commit message:

 Fix Shiny namespace lookup and empty silent-error reporting
 
Package: BreastSubtypeR
Commit: 0921e85b2d7eeed72b4679df43fc5dce379c5087
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 07:35:15 +0200
Commit message:

 Merge pull request #173 from JohanHartmanGroupBioteam/maintenance/1.5.8-candidate

Prepare provisional 1.5.8 maintenance candidate and document ROR limitations 
Package: BreastSubtypeR
Commit: 107d0388ff2b596b2fedb18dcc5421f09b5e287d
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 06:45:23 +0200
Commit message:

 Prepare provisional 1.5.8 candidate with ROR interpretation and boundary disclosures
 
Package: BreastSubtypeR
Commit: aea84bd07b126c122b7445d34895c7a43c0ef000
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 05:43:52 +0200
Commit message:

 Merge pull request #171 from JohanHartmanGroupBioteam/ci/bioccheck-account-checks

Stabilize BiocCheck CI by separating maintainer account checks 
Package: BreastSubtypeR
Commit: d4198abc26711036ee77f36f80a4a2e85d1f9924
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 05:18:04 +0200
Commit message:

 Stabilize BiocCheck CI by separating maintainer account checks
 
Package: BreastSubtypeR
Commit: b34d561fda860d6b2b1e2d1bf0e7fd3196846106
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-19 05:13:48 +0200
Commit message:

 Merge pull request #170 from JohanHartmanGroupBioteam/docs/readme-shiny-screenshot

Synchronize README screenshot and refine publication links and logo 
Package: BreastSubtypeR
Commit: cb8123928f133393889e9e302eaa8a8d03a24227
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 04:46:21 +0200
Commit message:

 Increase README logo height to 120 pixels
 
Package: BreastSubtypeR
Commit: 856f0e603cc1cd4b13e7b140a8ad29de88b4bfce
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 04:43:53 +0200
Commit message:

 Link Editor's Choice references to the BreastSubtypeR entry
 
Package: BreastSubtypeR
Commit: 4cf3fd342d6d9026ee3cc4fa749e7528fd936f33
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 04:35:58 +0200
Commit message:

 Synchronize README Shiny screenshot after visualization refresh
 
Package: BreastSubtypeR
Commit: 7a1085ca489663118cbb50505770e46056cff010
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 04:25:53 +0200
Commit message:

 Merge pull request #169 from JohanHartmanGroupBioteam/maintenance/visualization-refresh

Refresh approved visualization styling with exact scientific preservation 
Package: BreastSubtypeR
Commit: 06ab3d61496a49fbf301c19d40fb9dc1d7729313
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-19 00:39:54 +0200
Commit message:

 Refresh approved visualization styling without changing scientific results
 
Package: BreastSubtypeR
Commit: de820e700d3de2290d8ddf6c4c1d2a275a32c16a
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-18 23:35:41 +0200
Commit message:

 Merge pull request #165 from JohanHartmanGroupBioteam/docs/documentation-refresh-oslo-20261018

docs: refresh documentation and correct OSLO example provenance 
Package: BreastSubtypeR
Commit: 7bc7e954d017ac340e1c0f72408f3e5c2af713a9
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 23:09:20 +0200
Commit message:

 docs: align Shiny workflow and add verified example screenshot
 
Package: BreastSubtypeR
Commit: 97dbcbc719e59eabb0c9880fe474df9dd697b57a
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 23:09:20 +0200
Commit message:

 Merge main into documentation refresh
 
Package: BreastSubtypeR
Commit: 38d4f5811c0793f64b53de2ed4b8ae3ceacae07c
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 22:33:19 +0200
Commit message:

 Merge pull request #167: clarify the local Shiny workflow

Clarify the local Shiny workflow and compact its presentation. 
Package: BreastSubtypeR
Commit: f6da04e571907207b6a3dc9c0448e82937fa4efe
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 22:03:59 +0200
Commit message:

 test: cover Shiny workflow and pending AUTO presentation
 
Package: BreastSubtypeR
Commit: 22a79b3e4b4ed143349496d8193e0a56c50fcc60
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 22:03:44 +0200
Commit message:

 ui: clarify AUTO state and Shiny presentation
 
Package: BreastSubtypeR
Commit: 047970d859fac312afd0f3b8465d2667d936859b
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 17:32:44 +0200
Commit message:

 docs: label release and devel build badges
 
Package: BreastSubtypeR
Commit: 463e77b1c84705242b2f91758aba73366beb435e
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 16:53:58 +0200
Commit message:

 docs: correct OSLO example expression provenance
 
Package: BreastSubtypeR
Commit: 8951b7a1fbc8e21b9087e826c84b4bbee01ab323
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 16:53:50 +0200
Commit message:

 docs: refresh README and publication recognition
 
Package: BreastSubtypeR
Commit: b90c15f9b0869e71b2c0cbfaafcb71fa2b6a3aba
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 16:53:43 +0200
Commit message:

 docs: synchronize workflow vignette
 
Package: BreastSubtypeR
Commit: 669bcb93f97f491ab58fca7064129eb3d26a26d5
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 16:53:35 +0200
Commit message:

 docs: clarify method interpretation and reference help
 
Package: BreastSubtypeR
Commit: 84ec049322ced442c7ceced8af4fac30deb248c4
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 11:51:05 +0200
Commit message:

 Merge pull request #162 from JohanHartmanGroupBioteam/codex/input-coverage-161

Report model-specific input coverage in R and Shiny 
Package: BreastSubtypeR
Commit: d8cd0828b3a1addb763960603357b275b718b8ba
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 11:15:56 +0200
Commit message:

 feat: display current input coverage in Shiny
 
Package: BreastSubtypeR
Commit: c08079b9fc310ee80eb0bb6687872190369fc051
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-18 11:12:53 +0200
Commit message:

 feat: report model-specific input coverage in R
 
Package: BreastSubtypeR
Commit: 6ba679745411451c9548ce9727705f1b468ea9f0
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-17 20:34:48 +0200
Commit message:

 Merge pull request #160 from JohanHartmanGroupBioteam/codex/issue-159-ssbc-quantile-provenance

Clarify ssBC.v2 quantile provenance and references 
Package: BreastSubtypeR
Commit: e004e7bc3b5e134a9dcf58b11983fce1c691f104
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-17 07:47:29 +0200
Commit message:

 docs: clarify ssBC.v2 quantile provenance and references
 
Package: BreastSubtypeR
Commit: 746bf2a0c83e2f4848b137bed51fc8d254d68aef
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-17 06:45:15 +0200
Commit message:

 Merge pull request #158 from JohanHartmanGroupBioteam/codex/issue-152-pam50-confidence

Fix PAM50 Confidence calculation to match Parker 
Package: BreastSubtypeR
Commit: 550ed744eb19d892e3c5cc552bd68a609dc7bbf1
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 22:32:35 +0200
Commit message:

 Merge origin/main into codex/issue-152-pam50-confidence
 
Package: BreastSubtypeR
Commit: 207870e520e6d38dba55f8eb59e4c400b402da33
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-16 22:08:50 +0200
Commit message:

 Merge pull request #157 from JohanHartmanGroupBioteam/codex/issue-154-ror-boundaries

Fix subtype-specific ROR-PC risk-group boundaries 
Package: BreastSubtypeR
Commit: 6f68e09e7ad342faee62f3b01766c64c230f0834
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 20:02:22 +0200
Commit message:

 fix: restore Parker PAM50 Confidence calculation
 
Package: BreastSubtypeR
Commit: 66272ca3adfcf1e64f6aa09f04aa90e3b2dfddf2
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 19:59:10 +0200
Commit message:

 fix: correct subtype-specific ROR-PC cutoff boundaries
 
Package: BreastSubtypeR
Commit: 59e0e2c692ec6a00fe28b863a1cff8bee8e01626
Author: Emmanouil Sifakis <sifakise@gmail.com>
Date: 2026-10-16 19:09:49 +0200
Commit message:

 Merge pull request #155 from JohanHartmanGroupBioteam/codex/issue-153-node-documentation

Clarify NODE counts in clinical ROR documentation 
Package: BreastSubtypeR
Commit: 181c5c0fc96290e13dcb7a0ffd1b50d49d87883e
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 18:46:24 +0200
Commit message:

 docs: refine clinical ROR help and cutoff wording
 
Package: BreastSubtypeR
Commit: d4c63e9ef64c8f6ff7275c3ad103a861ed761fe1
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 18:18:03 +0200
Commit message:

 docs: clarify NODE counts for clinical ROR grouping
 
Package: BreastSubtypeR
Commit: 58e200cd460591c53daba5dc3db53ca291e2fd9e
Author: Emmanouil Sifakis <emmanouil.sifakis@ki.se>
Date: 2026-10-16 18:18:02 +0200
Commit message:

 test: cover existing NODE and TSIZE handling in ROR
 
Package: PADOG
Commit: dbc3d6fd21e7aed9930b2907bf7d8ef8598cadae
Author: Adi Tarca <atarca@med.wayne.edu>
Date: 2026-10-19 13:53:38 -0400
Commit message:

 improved compPADOG. bumped version
 
Package: GSVA
Commit: b446e6d707d0ab08294ce5362cd50064f8aef8c6
Author: Robert Castelo <robert.castelo@upf.edu>
Date: 2026-10-19 18:10:27 +0200
Commit message:

 Fix on the GSVA random walks with missing values, which now run only over the non-missing genes of each column
 
Package: GSVA
Commit: d008fda511c0674c84b3ad3c662b83cb66560148
Author: Robert Castelo <robert.castelo@upf.edu>
Date: 2026-10-19 17:10:04 +0200
Commit message:

 Handle undefined GSVA random walk scores produce by either maximal or singleton gene sets. In the C code, avoid integer overflows in a couple of places, and also free a couple of missing memory allocations
 
Package: GSVA
Commit: 20ee1a42db3527a2bfca7772c55c1b86d053d5fd
Author: Robert Castelo <robert.castelo@upf.edu>
Date: 2026-10-19 16:17:44 +0200
Commit message:

 Discard duplicated gene identifiers in gene sets
 
Package: smoothclust
Commit: b06dd0c5d2b69529596ea81521a0d54a21b3a336
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-13 00:16:02 -0400
Commit message:

 documentation updates and minor updates
 
Package: smoothclust
Commit: 5bdf79ab127b9b5619c015fd9c2d19336fca830b
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-12 23:36:36 -0400
Commit message:

 change 'adjust' argument to logical
 
Package: smoothclust
Commit: c2f482c9005045f872ab13779c5c471bd2808c8b
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-11 11:18:42 -0400
Commit message:

 documentation updates
 
Package: smoothclust
Commit: e213f2195e0ed4f9bc152fb8f7bcb514b350a016
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-11 10:56:23 -0400
Commit message:

 version
 
Package: smoothclust
Commit: baacc9bf2e4a129168349703167a2edee0b80492
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-11 10:56:06 -0400
Commit message:

 documentation updates
 
Package: smoothclust
Commit: e52f62199934d3cd7af0fd3200503aaf555aa045
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-11 10:39:30 -0400
Commit message:

 documentation updates
 
Package: smoothclust
Commit: e1d4085c2833a7db7327fe6cd726a7c1eb56c228
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-10-11 09:27:11 -0400
Commit message:

 bugfix when coordinates coincide; rebuild package
 
Package: smoothclust
Commit: 642e469ed8fee0dc3407e15fc47e276744bb04ef
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-26 11:25:34 -0400
Commit message:

 vignette example - number of neighbors parameter
 
Package: smoothclust
Commit: 5a13a610319caf81d628562b4baa6c625a351a8f
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-26 11:03:00 -0400
Commit message:

 version
 
Package: smoothclust
Commit: 1ae49c99484cf6555020d371e55022923e089c77
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-26 11:02:53 -0400
Commit message:

 update NEWS
 
Package: smoothclust
Commit: 26b73a343ebebe825d3b43f0570e5dd1ee38d0be
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-26 11:02:06 -0400
Commit message:

 simplify boundary density calculations
 
Package: smoothclust
Commit: 44ca80d57a1f395482e410035c7ff41948b3c6f9
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-25 15:24:10 -0400
Commit message:

 allow size factors for zero counts
 
Package: smoothclust
Commit: d1129c8013efc229245b95f7b0bc51e5127aba37
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-20 18:08:28 -0400
Commit message:

 version
 
Package: smoothclust
Commit: 24b1f1fa4471d08d9c03af50dda3a615648ccb27
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-20 18:08:22 -0400
Commit message:

 add NEWS
 
Package: smoothclust
Commit: 6bdae00e954bf6eda76c6da984ccacde4d1d0127
Author: Lukas Weber <weberlm3@gmail.com>
Date: 2026-07-20 18:08:01 -0400
Commit message:

 updates for library size normalization and log transformation
 
Package: exploreSE
Commit: f0a4ced85fe30f6c5be4bc0ec82cab07d61af680
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-19 16:36:53 +0200
Commit message:

 bug fix in get.gos and get.gsea
 
Package: BiocCheck
Commit: 5595f6db80aa00b45ea869d85a3bfd6ce6a81130
Author: lshep <lori.shepherd@roswellpark.org>
Date: 2026-10-19 09:47:49 -0400
Commit message:

 Updates

 - pkgType now takes BiocType in Description into account
 - Fix Size check for non software packages
 
Package: multipointR
Commit: 9832d7d6ab386eeaa299e7dbbd223499de480df0
Author: mjemons <martin.emons@gmail.com>
Date: 2026-10-19 15:46:28 +0200
Commit message:

 version bump and exponential kernel default
 
Package: multipointR
Commit: f74fbfc08c3fb33154bb5e2c190b4b4db544ef5e
Author: Martin Emons <55688661+mjemons@users.noreply.github.com>
Date: 2026-10-19 15:28:57 +0200
Commit message:

 Rewrite towards allowing adaptive selection and Cox models (#4)

* allow relaxed fit

* option to standardise scales and permutation test for coefficients

* rmin for kppm and new lambda default

* fixed many bugs for kppm models

* adapted to matern kernel and polish vignette for kppm

* updated docs

* made examples shorter

* reducing test and example compute time/mem

* reduce test compute memory 
Package: SpaNorm
Commit: f79061de670f032ecb1ea872bd6ea19eecf0c302
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun157.hpc.net.uq.edu.au>
Date: 2026-10-19 19:18:02 +1000
Commit message:

 Move repository to BhuvaLab: update URLs (DESCRIPTION, pkgdown, README, vignette)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: c12e5e57a9ee24036a32a178f1dd4466d4679ab4
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-30 06:15:55 +1000
Commit message:

 Merge feature/block-design: tpsBasis(), nbBlockDesign() compact block designs for polishNB, singular-block fix (1.7.15)

- tpsBasis(): SpaNorm's tensor natural-spline basis of position, exported;
  built on reference coordinates and evaluated anywhere, centred on the
  reference (identical to the internal bs.tps() on its own coordinates)
- nbBlockDesign(): a compact [X | Z_1 | ... | Z_G] design for polishNB(),
  nbProfilePsi() and nbNewtonSolver(), each group's q x q block removed by a
  Schur complement; at spiDE's depth = "spatial_spline" shape (30k cells, 50
  patients, 759 block columns, 1,000 genes) 3.3x faster than the dense
  grouped absorption with coefficients equal to 2.3e-13 (job 29111836)
- polishNB: a block the grouped solver cannot factor now flags that gene
  singular instead of stopping every gene's polish (regression test)

R CMD check (job 29107531): tests, examples and vignette OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: d5bec965f6bc93f697b8ac9be0dd1d733e1b048c
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-30 05:42:43 +1000
Commit message:

 NEWS: nbBlockDesign() timing at spiDE's spatial_spline shape (job 29111836)

One index type as spiDE builds it -- 30,000 cells, 50 patients, 1-3 sections
each, 759 block columns (6-31 per patient), 10 dense columns -- 1,000 genes,
profile dispersion, one dedicated core:

  intercept-only model     0.345 s/gene   ( 5.8 min)
  spline, dense grouped    1.571 s/gene   (26.2 min)
  spline, compact          0.480 s/gene   ( 8.0 min)

Per-gene factorisation 0.120 s dense vs 0.009 s compact; same Newton
iteration counts (20.0 per gene); all 1,000 genes polished on both paths,
coefficients within 2.3e-13, log-likelihoods within 2.5e-16 relative.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: b00d4c10ae13d617539ec01b348e7877f0b98bc4
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-30 05:02:36 +1000
Commit message:

 benchmarks: polishNB on spiDE's depth = "spatial_spline" design, dense vs compact

block_design_spide_shape.R builds spiDE's design for one index type exactly
as spiDE's .indexDesign() + .depthBlocks() do (checked equal to spiDE's own
functions when a spiDE tree is given: same W, absorb and pen): per patient an
intercept and, per section, [l | l * B] with B the section's 3x3 (2x2 below
200 cells, none below 100) spline basis, plus niche and condition x niche
columns. It fits it with polishNB() on spiDE's dense grouped absorption and
as a compact nbBlockDesign (group = patient, each patient's block columns
padded with zero columns to the widest; spiDE's 1e-3 ridge keeps the padding
at 0, so the fit is the dense fit), with the intercept-only model as the
reference cost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: 9854052c196ab78121320bc9975b1ebad41caf25
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-30 00:42:19 +1000
Commit message:

 SpaNorm 1.7.15: NEWS, timing benchmark for nbBlockDesign()

benchmarks/block_design_timing.R (build-ignored) times polishNB() per gene on
simulated data at spiDE's spatial_spline shape -- 45 patients, 40 dense
columns, a 10-column block per patient (intercept + l x 3x3 spatial spline)
-- in four arms: the dense grouped design, the compact nbBlockDesign, and the
intercept-only model (patient intercepts alone) as a dense logical absorb and
as a q = 1 block design. Run on one dedicated core, one BLAS thread, 3 genes,
profile dispersion (SLURM job 29107530, results committed alongside):

  cells    intercept   spline dense   spline compact   dense/compact
  20,000     0.40 s        1.92 s          0.34 s            5.6x
  60,000     0.88 s        4.56 s          0.86 s            5.3x
  150,000    2.24 s       10.64 s          2.17 s            4.9x
  300,000    3.94 s       13.89 s          3.69 s            3.8x

The per-gene factorisation is 8.0-13.2x faster than the dense grouped one;
coefficients, log-likelihoods, dispersions and iteration counts agree between
the two layouts in every arm. .Rbuildignore also drops `.git`, which is a
file (not a directory) in a git worktree and so was shipped by R CMD build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: 4e113aeb7443a59daec3b2daa51f8dafa9968d1d
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-30 00:41:25 +1000
Commit message:

 nbBlockDesign: as.matrix() without the sparse-coercion warning

as.matrix() filled the block part through as.matrix(), which
Matrix warns about on every large coercion (1 GiB at 300,000 cells x 490
columns). It now fills each group's rows directly; the values are the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 </pre>
    </div>
  
    
Package: SpaNorm
Commit: cc54e712fc74fac24f03f4b653dfc9bd2385d89c
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-29 23:52:31 +1000
Commit message:

 nbBlockDesign(): compact per-group block designs for polishNB

A design [X | Z_1 | ... | Z_G] whose block columns are non-zero only on their
group's cells -- a per-patient intercept plus a per-patient spatial
library-size spline, say -- can now be passed to polishNB(), nbProfilePsi()
and nbNewtonSolver() as W = nbBlockDesign(X, Z, block): the dense cells x p_x
columns, one cells x q matrix of each cell's own block values, and the group
of every cell. The dense n x (p_x + G q) matrix is never built. The linear
predictor and the score go through a sparse copy of the block part (n q
entries) or, for a batch of 5+ genes, group-by-group BLAS products; the
per-gene factorisation scales each group's pre-split rows once and takes the
group's share of X'WX, B_g = X_g'W Z_g and C_g = Z_g'W Z_g + diag(pen) from
them, absorbing every C_g by a Schur complement. Cost per Newton step is
O(n (p_x + q)^2) whatever G is.

The coefficient layout is as.matrix(D)'s: X's columns, then group 1's q
columns, group 2's, ... lambda.a and start.cols may be given for [X | Z]
only (the Z part then applies to every group). The results are the dense
grouped path's (as.matrix(D) with absorb = rep(1:G, each = q)): the tests
hold coefficients, log-likelihoods, dispersions, polish flags, the Schur
complement S, the cross block B, each C_g^-1, the Newton step and xcov() to
1e-8 or tighter against it and against the full dense inverse, for both
engines, profile and fixed dispersion, warm starts, vector and matrix
offsets, unequal group sizes, gene blocking and a nearly aliased group
(condition ~1e10).

Degenerate groups are handled rather than failed: each C_g is scaled to unit
diagonal and Cholesky-factorised, and one whose smallest squared pivot falls
below rank.tol (1e-10; a variance inflation above 1e10) -- fewer cells than
columns, a level with no cells, an unpenalised column constant over the
group -- is inverted by a truncated eigendecomposition (a generalised
inverse). The step is then zero along the group's null directions, which do
not enter the linear predictor, and the fit equals the dense fit with the
aliased columns removed (tested for an empty level and a 2-cell group). The
dense grouped path flags such a gene singular. The factorisation state
carries S, B, per-group H with C_g^- = H H', and the per-group rank, for a
caller that needs the Schur pieces (e.g. a sandwich).

CPU only: a device backend, absorb/absorb.batch, and the batched/device
helpers (nbNewtonSolverBatch, nbGramBatch, nbAbsorbGramBatch) refuse a block
design with a message. The matrix path is unchanged: the design helpers
evaluate the same expressions on a base matrix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: d5c9eb12a61db8bb17645f9d0cee15f188a55d13
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-29 23:43:30 +1000
Commit message:

 tpsBasis(): export SpaNorm's spatial spline basis

The tensor product of per-axis natural splines that SpaNorm's fit is built
from (the internal bs.tps()), exported so a downstream model can use the same
smooth functions of position -- e.g. a per-patient spatial library-size
spline. On its own coordinates it is bs.tps() bit for bit (tested with
identical(), and against the biology columns of a real SpaNorm fit). It can
also be built on reference coordinates (knots at the reference quantiles,
boundary knots at its range, df from its ranges) and evaluated anywhere, with
the columns centred by the REFERENCE means, so two subsets of one section
share one basis. `df` may be one value (bs.tps()'s aspect-ratio rule) or one
per axis.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: 7a4bc385647bcb3c463349ceba158f74398e47dc
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun038.hpc.net.uq.edu.au>
Date: 2026-09-29 23:43:20 +1000
Commit message:

 polishNB: a block the grouped solver cannot factor flags the gene singular

When a per-group block of C = Z' diag(w) Z fails its Cholesky (an unpenalised
block with no cells, or with fewer cells than columns), the grouped solver's
factor() returns NULL. The per-gene engine handed that NULL back to solve(),
whose as_fac() treated it as a weight vector and stopped the whole polish in
sqrt(NULL); the batch engine stored it with `[[<-`, which deletes the list
element. One unfactorable gene thereby killed every gene's polish. as_fac()
now passes NULL through (solve() and xcov() already return NULL on it) and
the batch engine keeps the NULL with `[<-`, so the gene falls back to its
input fit flagged singular, as a singular Schur complement already did.
Regression test in test-polishNB.R (errors on master in both engines).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JfUYckeFijW2ogSFn5hPNq
 
Package: SpaNorm
Commit: 4694532dceb43dc3218f5d11451053f43d096088
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-28 11:51:21 +1000
Commit message:

 Merge fix/polish-collinear-block: catch a collinear unpenalised block up front (macOS arm64 CI)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b2b3085392c7d1542e776e122c3e47d9cda9a232
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-28 11:39:32 +1000
Commit message:

 polishSpaNorm: catch a collinear unpenalised block up front, not per gene

A batch matrix given with every level's indicator makes the unpenalised
block [(gmean), batch] collinear, so every gene's information is exactly
singular. The polish left that verdict to each gene's chol(), which turns on
rounding: x86 (Ubuntu, Windows) flagged all 20 genes of the test fixture,
macOS arm64 CI factored every one and polished gene 3 along the null
direction (5 failures in test-polishSpaNorm.R, run 36237141413).

One QR of the unpenalised columns now decides it for every gene: the
information X'WX + diag(pen) is positive definite exactly when those columns
have full rank. A collinear block marks the kept genes singular and
unpolished without calling polishNB(), and the warning names the cause. The
test mocks polishNB() to fail if reached, so it pins the up-front check on
every platform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 521dc95bcc030ff38529a2d2359d14228f72b0db
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 20:53:12 +1000
Commit message:

 Merge feature/polish-nb: host the per-gene penalised-NB polish (polishNB) and add polishSpaNorm() (1.7.14)

polishNB(), nbProfilePsi() and the nb* Newton/gram solvers move here from spiDE
(outputs unchanged, pinned by spiDE's golden gate at tolerance 0). polishSpaNorm()
polishes the SpaNorm model itself (shared a1 fixed by default or joint, gmean
outside W, wtype ridge x ncells, zero-gene and zero-batch-level hold-outs), and
SpaNormSVG()/svgTest() pair the full and null fits by polish state and settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 0c3d870dfde0197fa7c1fa677b7bc045b1b2604f
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 16:06:38 +1000
Commit message:

 docs: scope the polish evidence to what was measured; the batch-level hold-out

NEWS and the vignette's "Polishing the fit" (final review M-4/M-5/M-6 and
the parked timing minor):

- The per-gene log-mean shift under ls = "joint" (median 0.03 and 0.09 SE,
  max 0.17 and 0.68) was measured on two cores (404_16, 709_51) over a
  random 50 genes each (task 10b §3); it is now stated that way.
- The 4-7x wall-time cost was measured at tol.ls = 1e-6, where every joint
  fit ran all 10 steps; the shipped 1e-3 stops sooner and the cost was not
  re-measured. Said so.
- "A handful" of SVG changes is replaced by the counts: 137 -> 123 on the
  395-cell core, 5 -> 5, 180 -> 178, 545 -> 551 (task 10 §2).
- NEWS: nbProfilePsi() takes an offset but no absorb/absorb.batch; the
  F.raw attribute is removed from user NEWS (the code comment stays).
- Vignette: the default psi.method = "fixed" converges the mean at
  SpaNorm()'s dispersion and keeps it; "profile" re-estimates it. The
  motivation no longer implies the default fixes an inflated dispersion.
- Vignette: the exact 33.2 s / 24.6 s become "about half a minute or more
  on one core".
- NEWS: the polishSpaNorm bullet gains the batch-level hold-out (held_out
  column, warning) and the unpolished-genes warning; the SpaNormSVG bullet
  lists psi.range among the paired settings under "profile".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: ad1bc5fa15f540482e646449fa7bbed3e7466ae9
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 15:59:16 +1000
Commit message:

 tests: tighten the joint-stationarity assertions to a1's own SE

The recomputed pooled score was checked with |U| < 1e-3 * sum(Y), which is
2.85 a1-SEs on the fixture, and the recorded score against it with an
absolute tolerance of 1e-3 * sum(Y) (597, against |U| ~ 0.02). The only
tight check read the recorded score, not an independent one (final review
M-3).

Per the ruling, the stationary, all-zero-gene and profile joint tests now
assert |U| * ls.se < 1e-3 with U recomputed from the stored fit, and
|ls.score - U| < 1e-6 |U| + 1e-8. All pass on the fixture unchanged. A
mutation that returns a1 0.5 SE off its optimum, every gene re-polished
there and the recorded score left at the optimum's, passes all 15 old
expectations and fails both new ones (|U| * se = 0.501; |score - U| = 105).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 1b7d7b9bd36fd96ebd265310cc0e77091ec347a3
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 15:56:41 +1000
Commit message:

 polishSpaNorm(): record psi.range under "profile"; SpaNormSVG() forwards and compares it

Under psi.method = "profile" the dispersion's search interval is part of
the objective (a gene whose optimum is on a bound keeps its input psi), but
it reached polishNB() only through `...` and was never recorded. So
SpaNormSVG() polished a missing null at the default interval, and
.polishedAlike() accepted the pair. Final review X5, reproduced here: with
psi.range = c(0.02, 0.2), "polish the full fit, then SpaNormSVG()" and
"SpaNormSVG(), then polish both" gave nulls differing in psi on 6 of 40
genes and svg.F by up to 1.36, both passing as polished alike.

Per the M-1 ruling: .polishSpaNormFit() records psi.range in
@polish$settings when psi.method = "profile" (the value passed, else
polishNB()'s default, read from its formals); SpaNormSVG()'s null polish
forwards it; .polishedAlike() and .polishAlikeDiff() compare it under
"profile", a missing field (a fit polished before this) meaning the
default. The code's design implies the two routes should pair alike, not
be refused: the null polish is meant to use all of the full fit's recorded
settings. The X5 test asserts that: both routes record the range on all
four fits and give the same null psi, psi_bound and svg.F (1e-8). A
second test pins the comparison: a hand-made pair with different ranges is
not alike and svgTest() names 'psi.range'; a missing field matches the
default; "fixed" does not record it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 81898363a8cbc3eb6f6e1aaea9af93da50b88016
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 15:52:12 +1000
Commit message:

 polishSpaNorm(): warn when genes passed to the polish stay unpolished

A gene the Newton engine cannot converge keeps its input fit
(polished = FALSE), and the fit is still marked polished. When that was
every gene (final review X2: a one-hot batch matrix with no intercept
column passes checkBatch(), leaving the unpenalised block collinear, so
all 20 genes are singular) the polish was a silent no-op: isPolished()
TRUE, coefficients and logcounts unchanged, no warning.

.polishSpaNormFit() now warns once per fit with the count of genes passed
to the polish that were not polished and how many of them were singular
(final review M-2 ruling). isPolished() stays TRUE and there is no entry
stop, since SpaNorm() accepted the design. Held-out genes are not counted
here; they have their own rule.

Test: the X2 design through SpaNorm(batch = model.matrix(~ 0 + b)); it
was silent before this change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 933cd7d2bc28ea1696451ece22bcfcc8abd814b4
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 15:50:01 +1000
Commit message:

 polishSpaNorm(): hold out a gene with no counts in a whole batch level

Batch columns are unpenalised 0/1 indicators, so a gene with no counts in
every polished cell of one level has no finite optimum: that level's
coefficient runs to -Inf, the degeneracy the all-zero hold-out already
covers for the intercept. The polish drove it there and reported the gene
converged, and the normalisation then imputed the gene at full strength
where it was never observed. On the new batch fixture: batch coefficient
-0.174 -> -19.65 (-22.3 under ls = "joint"), and logcounts in the all-zero
level mean 1.54 -> 6.11, against 6.24 in the level it is expressed in.

The all-zero rule is generalised (final review I-2 ruling). The polished
cells are grouped by the unique rows of the unpenalised block of the
polish design (the (gmean) intercept and the batch indicators), and a gene
with zero total counts in some group is held out as an all-zero gene is:
polished = FALSE, input coefficients and dispersion kept, and under
ls = "joint" the new shared a1. The all-zero rule is the one-group case,
unchanged (still a verbose message only). Groups are formed only when every
unpenalised column besides the intercept is 0/1; otherwise only the
all-zero rule applies (documented). The reason is recorded per gene in a
new @polish$genes column, held_out ("all-zero" / "zero-batch-level" / NA),
and one warning per fit counts the batch-level cases, naming the fit
('SpaNorm' or 'SpaNormNull'). The null polish goes through the same path,
from polishSpaNorm() and from SpaNormSVG().

Tests: the grouping and hold-out helpers; a batch-factor fixture where one
gene is zero across a level (held out, input kept, warning, logcounts not
inflated); the other genes polished to their optimum with the batch
column unpenalised; the joint variant; SpaNormSVG() pairing and running on
the batch design with the gene held out of the null too. The all-zero test
now also asserts no warning and held_out = "all-zero".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 017d045fbfde421bf049071b48b3068eedc3e7b0
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 15:23:19 +1000
Commit message:

 tests: check unpolished SpaNormSVG() against master's statistic, not a stored RDS

The unpolished-SVG regression test compared SpaNormSVG()'s output with
expect_identical() against an RDS computed on one node. The fits behind it
are rebuilt at test time (scran size factors, the IRLS, edgeR), so the
last bits follow the BLAS: on the same node the assertion fails with
OPENBLAS_NUM_THREADS=1 ("Objects equal but not identical"), and the final
review measured 9.1e-13 under OPENBLAS_CORETYPE=Prescott. Every CI
platform and Bioconductor builder uses another BLAS.

The test now runs SpaNormSVG(backend = "cpu") and asserts its statistics
equal master b5d3f8f's svgTest() body applied inline to the same full and
null fits, at tolerance 1e-10. It passes at 1 and 4 BLAS threads and under
Prescott, and fails on a 1e-8 relative drift in svg.F. The RDS had no
generator in the repository; it is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 028d8e70d05bc8a2cf460036ed8c1bb70b84f27d
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 13:28:44 +1000
Commit message:

 docs: NEWS and vignette for polishNB()/polishSpaNorm()

Adds the user-facing NEWS.md entries for the polish machinery moved
from spiDE (polishNB(), nbProfilePsi(), the nb* Newton solvers), the
new polishSpaNorm()/isPolished() pair with the Task 10 ls = "fixed"
vs "joint" numbers and their caveats, and the SpaNormSVG()/svgTest()
polish-pairing rule (attr(, "F.raw")).

Adds a "Polishing the fit" section to vignettes/SpaNorm.Rmd covering
when to polish, the SVG pairing rule, and the ls choice; the demo
chunk is eval=FALSE (measured 33.2 s with null = TRUE, over the
vignette's ~30 s per-chunk budget).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: fca08ab848615bea8bbd2a8eac84a1246c66423c
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 11:55:20 +1000
Commit message:

 polishSpaNorm(ls = "joint"): lower the shared a1 stop to 1e-3

.LS_TOL asked for a1's standardised score |U|/sqrt(I) -- its distance
from the joint optimum in units of its own profiled SE -- below 1e-6,
far past what the inner per-gene polish can resolve. Measured on four
real YTMA cores (Task 10, jobs 28973894-98): all 8 joint fits hit the
ls.maxit = 10 cap and warned, although a1 had settled by step 3.

Lower the default to 1e-3 (a1 within a thousandth of its own SE, still
far inside its sampling error). .LS_MAXIT and the rest of the loop are
unchanged. Docs (polishSpaNorm()'s @details, man/polishSpaNorm.Rd) and
the tests that assumed the old default are updated to match; the
optim()-oracle test now passes tol.ls = 1e-8 explicitly, since it needs
a tighter stop than the package default to keep comparing against an
independent optimum. Adds a test that the default converges within the
cap and lands within 1e-3 * ls.se of a run forced to a much tighter
stop (via mocking .LS_TOL, since tol.ls cannot reach .polishSharedLS()
through polishSpaNorm()'s public ... -- it also reaches the cold-pass
polishNB() call first, which does not accept it).

devtools::test(): 1048 pass / 0 fail / 37 skip (was 1043/0/37).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b2b3a387f120876a569ba2765fe40d3620343a84
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 09:56:45 +1000
Commit message:

 SpaNorm 1.7.14: polishSpaNorm() (fixed and joint library-size coefficient), polished SVG pairing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: e441a9943755f83b814a9ad794003416a3dc71bc
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 09:46:51 +1000
Commit message:

 Fix round 1: joint loop stop, one gene set per step, no stop() on I <= 0

- .polishSharedLS() takes `...` before its options, so polishSpaNorm()'s
  per-gene maxit/tol no longer partial-match maxit.ls/tol.ls. The loop runs at
  its documented stop (|U|/sqrt(I) < 1e-6, 10 steps), and every warm
  re-polish receives the caller's maxit/tol. The loop's defaults live in one
  place (.LS_MAXIT, .LS_TOL) and are recorded as settings$ls.maxit and
  settings$ls.tol.
- The line-search total is summed over the same genes that formed U and I in
  that step. A gene left out for a singular information is still re-polished,
  but it can no longer stall the search or end it at a point that is not the
  maximum of the objective being compared.
- A non-positive profiled information warns and returns the fixed-a1 polish
  with the attempt recorded (ls.converged = FALSE), as the no-gene path does,
  in place of stop(). It is checked before the tolerance, so it is never read
  as convergence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 16528811e73438867d7f6aeefb278e7f10f085e2
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 08:33:27 +1000
Commit message:

 polishSpaNorm(ls = "joint"): the pooled, profiled Newton step on the shared a1

The library-size coefficient a1 is shared by every gene of a SpaNorm model.
ls = "joint" alternates the per-gene polish with a Newton step on the
profile log-likelihood of a1: score U = sum_g w1' r_g and profiled Fisher
information I = sum_g [(w1^2)' D_g - c_g' H_g^-1 c_g], with H_g^-1 c_g from
nbNewtonSolver()'s factorisation. Each candidate re-polishes every gene
warm (and, under psi.method = "profile", re-profiles psi and re-polishes);
the step is halved until the total penalised log-likelihood over the
polished genes does not fall. It stops at |U|/sqrt(I) < 1e-6 or 10 steps.

The sums, the objective and the re-polish run over the polished genes
only. A gene whose information is singular is left out of both U and I
and counted (ls.singular). Held-out genes keep gmean/alpha[, -1]/psi and
take the new shared a1. With no polished gene, a1 is left unchanged with
a warning. settings record ls.iterations, ls.score, ls.se = 1/sqrt(I),
ls.singular and ls.converged.

Matches an optim() oracle to 5e-8 in a1; on the test fixture the joint a1
moves 1.013 -> 0.938 (15.8 profiled SEs) for +124 log-likelihood units.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 5516896e3de65a44a4e0f9ec6ddb9409b1a68f74
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 07:12:58 +1000
Commit message:

 Fix round 1: .polishedAlike() compares polish settings, not just isPolished()

Review (Important) reproduced a real defect: two separate polishSpaNorm()
calls -- one polishing only the full fit, with a different psi.method -- give
a pair that is isPolished() on both sides but scores a different LRT (median
svg.F +38%, FDR<0.05 calls 30 -> 33, on .polish_spe()). The original ruling
3's "consistent" check (isPolished() equality only) accepted this silently;
it is reachable through the public API, not only by hand-assembling a
mismatched pair.

.polishedAlike(full, null) is now the sole function either SpaNormSVG() or
svgTest() uses to decide comparability: TRUE iff both are unpolished, or both
are polished and their recorded psi.method/ls/cells agree (the three settings
that define the fitted objective; a1 and maxit/tol are deliberately excluded).
svgTest()'s guard now names what differs via .polishAlikeDiff(). SpaNormSVG()
gains a fourth pairing branch: when both fits are polished but their settings
differ, it re-polishes the null with the full fit's settings -- starting from
the stored SpaNormNullUnpolished when there is one, else refitting -- with a
message() naming the mismatch. Every branch that polishes a null now forwards
ALL of the full fit's recorded settings (psi.method/ls/cells AND maxit/tol),
not only the three .polishedAlike() compares.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 0948b530bcd25283c43571e626c8d6cbd0b66ad6
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 05:19:18 +1000
Commit message:

 SpaNormSVG() pairs the full and null fits by polish state; svgTest() refuses a mixed pair

svgTest() compares a full SpaNorm fit against a nested "technical" null by a
likelihood ratio, and that is only a comparison of nested models when both
sides are estimated the same way. SpaNormSVG() now keeps the two paired
(.svgPairedNull()): a missing null is fit and polished to match a polished
full fit, using the full fit's own polish settings; a stored null whose
polish state already matches is used as is; a stored null that does not
match is polished in place (with a message) when the full fit is polished
and the null is not, and refused (naming both states, pointing at
polishSpaNorm()) in the other direction, since silently un-polishing or
polishing the full fit here is not SpaNormSVG()'s job. svgTest() gains the
same guard directly, since it is reachable via SpaNorm:::svgTest().

svgTest() also records the unclamped LRT statistic as attr(df.svg, "F.raw")
(additive only; svg.F is unchanged). On the .polish_spe() fixture this is
mildly negative for some genes even for a correctly polished pair (psi.method
= "fixed" keeps each model's own fitNB dispersion, and svgTest() scores
winsorised psi/mu independently per model), so the nesting guarantee is
tested differently: the polished full fit's own penalised objective, at its
own optimum, is at least as large as that same objective evaluated at the
polished null's coefficients embedded in the full design (biology columns at
0, shared library-size coefficient held at the full fit's own value) --
confirmed on the fixture (max relative gap -5.8e-4, well inside the 1e-8
tolerance, on all 40 genes).

Existing unpolished-pair SVG behaviour is unchanged (tests/testthat/fixtures/
svg_baseline_unpolished.rds is the pre-change output, asserted identical()
after).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 6bc98c0a7d1d4e13d241163871547d31ba9bebc2
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 04:00:28 +1000
Commit message:

 tests: polishSpaNorm() refuses a fit with an unshared library-size coefficient

The plan's Review Focus 1: a fitNB()-style or hand-built fit whose alpha[, 1]
differs across genes is refused at the entry point with an error naming the
column, and nothing is written to the object before the refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 87edfe6156122136d5c5a7fb82d8e272c73cdd00
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 03:51:02 +1000
Commit message:

 polishSpaNorm(): converge each gene of a SpaNorm fit, SPE and Seurat methods

A new exported generic that converges every gene of a stored SpaNorm fit to
its own penalised-NB optimum under SpaNorm's model (ls = "fixed": the shared
library-size coefficient held; gmean an unpenalised per-gene intercept; the
wtype penalties times ncells), through polishNB(). It stores the polished fit
as 'SpaNorm' and the input as 'SpaNormUnpolished', polishes a stored
'SpaNormNull' alike, drops stale SVG columns with a warning, and rewrites the
normalised assay from the polished fit.

- Genes with no counts in the polished cells are not passed to polishNB():
  they keep their input fit bit for bit and are recorded polished = FALSE.
- An already polished fit is refused unless overwrite = TRUE, which polishes
  again from 'SpaNormUnpolished', never from the polished fit.
- A non-integer counts assay is refused at the entry point.
- @polish holds settings (psi.method, ls, cells, maxit, tol, pen, a1.input,
  a1, SpaNorm) and per-gene diagnostics (polishNB()'s, plus loglik).
- ls = "joint" is a stub (.polishSharedLS()) until the pooled step lands.
- The SPE and Seurat methods share one core; the normalisation block size
  comes from .normaliseBlockSize().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 99e708997dfbb2cb7f2bf8197027f6db9db1a1f0
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 02:53:45 +1000
Commit message:

 Extract .normaliseBlockSize() from .spaNormCore()

The DelayedArray block-size rule for normaliseBlocked() moves into its own
helper so polishSpaNorm() can share it. Pure refactor: no behaviour change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: aa1abbe0f403e9c95cb1d2f132d74eb6c729fe20
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 02:23:57 +1000
Commit message:

 SpaNormFit gains a polish slot, isPolished(), and .spaNormPolishProblem()

Groundwork for polishSpaNorm() (Task 7): a `polish = "list"` slot
(prototype list(), so existing callers of SpaNormFit()/fitSpaNorm() are
unaffected), the exported isPolished() predicate and internal
.polishSlot() accessor (both go through methods::.hasSlot() rather than
`@`/`$`, since those error on an object saved before this slot existed
-- verified against a real RDS written under the installed pre-slot
SpaNorm 1.7.13), a show() line for a polished fit, and a validity check
that `polish` is either empty or carries `settings`+`genes`.

.spaNormPolishProblem() (R/polishSpaNormModel.R) maps a SpaNorm-model fit
(gmean/alpha/W/wtype parameterisation) onto the generic per-gene
penalised-NB problem polishNB() solves: the shared library-size
coefficient becomes a per-cell offset, gmean becomes an explicit
unpenalised "(gmean)" design column, and the wtype-keyed penalty is
reconstructed to match fitSpaNorm()'s own (R/mainSpaNorm.R).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 579d02e25dc53eccc377a12c7d6780389d09aa45
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-26 01:27:46 +1000
Commit message:

 tests: port spiDE's array-batch and .segmentSum tests

Task 5's move of the polish machinery to SpaNorm left these internals
(.setRows, .mulRows, .scaleCols, .asHost, .matmulB, .rowsFinite,
.rowMeansB, .colsOf, .maskedRowMin, .asLike, .rowMaxB, .asHostMat,
.segmentSum) untested here. Port spiDE's tests/testthat/test-array-batch.R
(11 test_that blocks) and the .segmentSum block from test-inference.R,
from spiDE commit 26997f0 (before deletion), into
tests/testthat/test-nbArrayBatch.R.

spiDE:::.foo becomes .foo and SpaNorm::toRMatrix/is_torch_tensor become
unprefixed, consistent with every sibling test file in this package.
Every torch half that builds a real CPU tensor is gated with
skip_if_no_gpu() instead of skip_if_not_installed("torch"): torch 0.17 on
a CPU device aliases R memory without keeping it alive, so results depend
on GC timing (a deferred engine follow-up). Base-R halves are ungated and
run everywhere.

devtools::test(filter = "nbArrayBatch"): 15 pass, 0 fail, 12 skip (GPU
halves only, no GPU on this node). Full devtools::test(): 763 pass, 0
fail, 37 skip, against a baseline of 748/0/25 at fbc7d67 -- the +15/+12
delta matches the focused run exactly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: fbc7d67b115be029be983fd00204828cec0ce210
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 21:30:17 +1000
Commit message:

 SpaNorm 1.7.13: polishNB() and the penalised-NB Newton machinery; RhpcBLASctl in Suggests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 2e3a3b66d6bc8e8a166dd5f999b4f6ae84fc41a3
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 20:46:02 +1000
Commit message:

 tests: gate the CPU-tensor engine tests on a GPU

On a CPU device torch 0.17's torch_tensor(, float64) wraps R's
memory without copying or holding it, so a tensor made from an R temporary
reads reused memory after a garbage collection. The engine's .asLike() and
.nbLoglikBatch() build tensors that way, and a second identical
.polishBatch() call in one process was measured returning wrong
coefficients. Every test that runs the polish engines' or the batched
solvers' tensor path on the CPU now uses skip_if_no_gpu() instead of
skip_if_no_torch(), with a comment at each: test-polishEngine.R (NB
kernels, the zero-dispersion loglik, mixed dispersions, .psiProfileBatch,
.polishBatch on tensors, the offset tensor path) and test-nbSolver.R
(.newtonSolverBatch, .absorbBatch). The engine fix is deferred; no engine
code changed.

test-polishNB.R: the comment that pointed to test-polishEngine.R for the
offset tensor path now says that test is gated too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 </pre>
    </div>
  
    
Package: SpaNorm
Commit: cce4cad0033b0ef5b43c8fdc36e0968c8bfa50e0
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 20:45:55 +1000
Commit message:

 polishNB(): remove the unread gpu.mem.budget argument

Moved from .polishFit(), which accepted it and never read it; the batched
working set is sized by batch.size or options(SpaNorm.polish.mem.budget).
The argument and its doc are removed; nothing else threaded it.

Test (RED: the argument was present): it is no longer a formal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: ece0cc52da8f4d935603523fb9fd07e3e36e7de2
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 20:45:35 +1000
Commit message:

 Multi-worker dispatch needs RhpcBLASctl only when it is installed

.singleBLAS() is now bpnworkers > 1 && .hasBLASctl(), where .hasBLASctl()
is requireNamespace("RhpcBLASctl", quietly = TRUE). Without the package
(it moves to Suggests), dispatch is plain bplapply() and the workers keep
the BLAS thread count they inherit, instead of erroring inside every
worker. With it, nothing changes.

The probe is a package function so a test can mock it. testthat 3.3.0
will mock requireNamespace() only in base (.package = "base"), which
would change it for every caller in the process for the whole test.

The BPPARAM doc says the workers go single-threaded when RhpcBLASctl is
installed, and what to do when it is not.

Test (RED: "Can't find binding for `.hasBLASctl`"): with the probe FALSE
and .workerBLAS() mocked to fail, a 2-worker MulticoreParam dispatches
without calling it (forked workers inherit the mock), and polishNB() and
nbProfilePsi() match the serial run. A mutant without the guard fails it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: a7e356653db371287dc0e30fb298bb6c0fca44bf
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 20:44:41 +1000
Commit message:

 polishNB docs: the integer-count guard reads the first 20 genes only

The moved guard (unchanged) checks the first 20 genes. It catches an assay
that is non-integer throughout, such as a back-transformed log-count
matrix, but not a stray non-integer value in a later gene. @details now
says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 1cea5979277c01b4435bca063ce8feff46b36027
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 20:44:18 +1000
Commit message:

 polishNB()/nbProfilePsi(): shape checks at entry; a scalar psi recycles

.polishShapes() stops, naming the argument and both sizes, when
nrow(W) != ncol(Y), nrow(alpha) != nrow(Y), ncol(alpha) != ncol(W), or
length(psi) is neither 1 nor nrow(Y). Both entry points call it. The
first case used to pass silently on the per-gene engine: with Y 2 x 50 and
W 100 x 2, each gene's counts were recycled against a 100-cell mean and
came back polished = TRUE with wrong coefficients. The batch engine failed
with an opaque BiocParallel error. Neither changes a valid call.

nbProfilePsi() recycles a scalar psi to nrow(Y). Left scalar, psi[gi]
gave NA to every at-bound gene after the first.

Tests (RED: no error on the gene engine, an opaque remote error on the
batch one, NA for the scalar psi): every mismatch in both functions, and
a scalar psi identical() to the equivalent vector.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 8d04c83a4e95f06df407bea11ba0063348ea0ac5
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:42:40 +1000
Commit message:

 polishNB docs: drop a stray roxygen fragment from the move

The move copied spiDE R/inference.R:12-72, which overran into the first
lines of .ptByCol()'s roxygen block ("Apply a t tail to a statistic
matrix..."). Roxygen merged that orphan fragment into polishNB()'s block,
so man/polishNB.Rd carried the wrong title. The fragment is deleted;
comments only, no code change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 44fab76b0048aea4d7bbedc6a7a47bbe684c3a46
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:39:05 +1000
Commit message:

 tests: move spiDE's re-profile kernel test with nbProfilePsi()

".reprofilePsi uses the same kernel as the batched engine" builds W
directly and tests the function that moved to SpaNorm as nbProfilePsi(),
so it moves too (Task 3 left it for this task): spiDE::: dropped,
.reprofilePsi() -> nbProfilePsi(), assertions and tolerances unchanged.
An at-bound gene keeps its incoming psi, and a free gene's dispersion is
the batched kernel's answer to 1e-12.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: fcfc386821390d3fd9fec802e5c23fb0e3c9a64e
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:36:24 +1000
Commit message:

 nbNewtonSolver docs: parse cleanly, and describe the batch arguments

`\code{W' diag(w) W + diag(pen)}` opened an R string at the apostrophe
inside \code, which gave 6 Rd parse warnings on every document(). It
now reads `\code{crossprod(W, w * W) + diag(pen)}`, the same matrix in
valid R. document() and tools::checkRd() are silent on every man page.

penalty_diag, backend, cell.tile and parts said "see polishNB()", which
does not document them; each is described here instead. The
\link{polishNB} in the description now resolves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 91b189478e04885d187a5993f170413725133d6b
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:36:24 +1000
Commit message:

 tests: name the far-start offset test for what it tests

"the sane start subtracts the mean offset" never reached the sane start:
a0 = 40 has a fitted log-mean of 43, which is not degenerate, and Newton
converges from it in 44 iterations with restarted = FALSE. It is renamed
"a far start converges to the intercept net of a constant offset", its
comment corrected, and it now asserts expect_false(r$restarted). The
sane start with an offset is tested by "the sane start is the log mean
net of the offset, in both engines".

Also in test-polishNB.R: the batch-size test reads the opening progress
message with capture_messages() instead of expect_message(), so the other
verbose lines no longer leak into the test output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b875e8e26ac4561603182773683423990bf5cb47
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:36:24 +1000
Commit message:

 Delete .polishCovBatchSize() and its three constants

Copied from spiDE's .covBatchSize() in the engine move, but nothing in
SpaNorm calls it (the polish is sized by .polishBatchSize() alone) and
nothing in the plan will: POLISH_TENSOR_MULT_COV, POLISH_BUDGET_FRACTION,
POLISH_COV_MEM_BUDGET_CPU and the SpaNorm.cov.mem.budget option go with
it. spiDE keeps its own copy for inference. The file header no longer
mentions it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 477b05b3eef538b6ace88740e3112f30293183a8
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:31:26 +1000
Commit message:

 polishNB(offset =, psi.range =): threaded to both engines, checked at entry

- offset: NULL, a per-cell log-scale vector or a genes x cells matrix,
  checked once by .polishOffset() (shape, finiteness; a Matrix made base,
  a torch tensor refused with a message). A NaN used to stop both engines
  with "missing value where TRUE/FALSE needed" and an Inf returned the input
  fit flagged singular. A matrix is sliced to each sub-batch's genes
  (.rowsOf(offset, gi[ii])) and to each gene on the per-gene engine,
  straight from the whole matrix, so no block-sized copy is held; it stays
  on the host and the engine moves it.
- sizing: with an offset the auto batch size counts one more genes x cells
  matrix (the .offsetRows() expansion at every mean evaluation), two for a
  matrix (plus the batch's held rows), through a new `mats` argument to
  .polishBatchSize(). POLISH_GENE_CELL_MATS is unchanged and a NULL offset
  adds 0, so that path sizes exactly as before.
- psi.range: forwarded to both engines (the default is theirs), checked to
  be two increasing positive numbers.

NULL offset and default psi.range: 20 saved outputs of the move commit
(both engines, both psi rules, blocks/batches, warm, absorb none/logical/
grouping, the mocked device path, MulticoreParam, nbProfilePsi) are
identical().

Tests (RED: unused arguments): each gene's zero penalised score at
exp(W a + offset) in both engines, vector and matrix; a matrix offset
sliced with the counts across block and batch layouts equals each gene
alone (a row mis-slice in either engine is caught); every bad shape
refused by name; Matrix made base; the device path receives exactly each
sub-batch's rows; the batch size at 6/7/8 matrices; psi.range bounds the
search in both engines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: a2ef9458a793f5256df6a98dde596ca61bc305c1
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:11:32 +1000
Commit message:

 nbProfilePsi(): the moved .reprofilePsi(), exported, with an offset

spiDE's variance-component loop re-profiles the dispersion after its warm
passes and will call this once the move lands, so it is exported
(@keywords internal) rather than left as a SpaNorm internal that spiDE
could reach only through :::. The body is .reprofilePsi()'s; the one
change is `offset = NULL`, appended to the signature and passed to
.muBatch() through .offsetRows() for the block's genes. Without it the
dispersion would be profiled at the wrong mean with no error. NULL gives
the pre-offset mean bit for bit.

.polishOffset() is the one check of an offset's shape (NULL, a
per-cell vector, a genes x cells matrix; finite; Matrix-class made
base; a torch tensor refused). polishNB() uses it from the next commit.

Tests (RED: could not find function "nbProfilePsi"): the dispersion
equals the profile ML at the given mean, a gene with no spread keeps
its input psi, blocking is exact, and a vector or per-gene matrix offset
moves psi to the ML at the offset mean. The optimize() oracle is
compared at 1e-6 because it places a flat optimum only to about
sqrt(eps).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b46c600ef33256c2e22aa5e1938d55abca4864f3
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:06:43 +1000
Commit message:

 polishNB(absorb.batch =): the 1x1 absorption for the shared-factor solver

The per-gene solver takes `absorb`, which for a random-slope fit is a
per-sample grouping with multi-column blocks. The shared-factor batched
solver (built inside .polishBatch() on a device) absorbs 1x1 blocks only,
and a grouping cannot be reduced to its 1x1 subset generically. So
.polishBatch(nested =) now gets `absorb.batch` when given; otherwise a
logical `absorb` unchanged; otherwise the dense batched solver (exact,
slower). spiDE passes its nested-indicator logical here, reproducing the
nested_batch split .polishFit() made from re_group.

`absorb.batch` must be NULL or a logical with one value per column of W.

Tests (RED: "unused argument (absorb.batch = d$nested)"): on the device
path, mocked onto the CPU, .polishBatch() receives absorb.batch with
shared.factor = TRUE, a grouping alone arrives as all-FALSE, a logical
absorb passes through, and all three agree with the CPU polish to 1e-5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 80753dbe8e917b55e83304ce4185ef14175c2612
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:03:56 +1000
Commit message:

 Tests for polishNB(): the optimum, engine parity, integer guard, zero gene

The plan's four tests. They failed before the move with
`could not find function "polishNB"`. Two of the plan's thresholds were
tighter than the moved engine's documented precision, which the move may
not change:

- the zero-score check at 1e-6 * sum(y) now passes tol = 1e-12. The
  default tol = 1e-8 stops on the relative log-likelihood gain and leaves
  up to 2.6e-6 on this fixture; 1e-12 gives 3.4e-8.
- engine parity is checked at a held dispersion (alpha to 1e-8; the two
  agree to 1e-16), then under "profile" to optimize()'s tolerance (psi to
  1e-4, alpha to 1e-6): the per-gene engine profiles psi with optimize()
  and the batch one by bisection, measured 1.9e-5 apart on log psi.

The zero-gene test asserts finite alpha and psi for both genes and a
polished first gene; the zero gene comes back polished, capped at maxit,
psi on its bound (kept at the input), intercept -27.45.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: bbe687d6d3d0740059c189ada4a1ceeec14fe008
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 19:01:15 +1000
Commit message:

 polishNB(): the gene-blocked polish driver, moved from spiDE

The body of spiDE's .polishFit() (R/polish.R) becomes the exported
polishNB(), with .reprofilePsi() from the same file and the helpers it
dispatches through from R/inference.R (.chunkGenes, .singleBLAS,
.workerBLAS, .bplapplySingleBLAS; spiDE keeps its own copies). The five
helpers are byte-identical after deparse; polishNB() differs from
.polishFit() only by:

- signature: pen -> lambda.a (kept as `pen` internally), covtype ->
  start.cols (the logical, taken directly; spiDE keeps the
  covtype == "CellType" derivation), re_group dropped, arguments reordered,
  psi.method = c("profile", "fixed") with match.arg();
- absorb = NULL means no absorption (rep(FALSE, ncol(W))); the re_group
  fallbacks for the per-gene and the shared-factor batched solver are
  spiDE-specific and stay there, so a grouping reaches the batched solver
  as the dense path;
- SpaNorm:: prefixes dropped;
- messages: the integer guard's last sentence is "Use the raw counts."
  and the lambda.a length error no longer mentions re.celltype.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 763f109b3a48c1e76664a206a456b6563cc16e4b
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 18:39:25 +1000
Commit message:

 Optional per-cell offset in the per-gene and batched polish engines

.polishGene(), .polishBatch() and .muBatch() take offset = NULL, a log-scale
offset added to every linear predictor: the Newton's starting mean, each
line-search candidate, the degenerate-start check, and the sane start,
which is now net of the offset's mean over the same cells. In the batch
engine every linear predictor goes through .offsetRows(), which slices a
per-cell vector (the same for every gene) or a genes x cells matrix to the
rows being computed. .polishBatch() refuses any other shape, and .muBatch()
refuses a bare vector that would otherwise recycle down its columns.

offset = NULL is the pre-offset engine bit for bit (16 saved result sets,
identical()).

Tests: the four from the plan, plus five that each fail when the offset is
dropped or mis-sliced at one site the four do not reach (the degenerate
check, the sane start with and without start.cols, per-gene row slicing
on a path where the active rows are not 1..B, the torch branch), and one
for the shape guards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 774dadd68ef83ecbd5e321e0d54c6fe924906886
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 17:44:56 +1000
Commit message:

 Per-gene and batched polish engine, moved from spiDE

Verbatim move of spiDE's damped-Newton polish engine on the penalised
negative binomial likelihood:

- R/polishEngine.R <- spiDE R/polish.R: .MU_FLOOR, .nbPenLoglik,
  .polishGene; plus the exported nbMuFloor() (returns exp(-30)).
- R/polishEngineBatch.R <- spiDE R/polish-batch.R, all of it; plus a copy
  of spiDE's .covBatchSize() as .polishCovBatchSize() with the three
  constants it reads (spiDE keeps its own for inference).

Renames only: ct_cols -> start.cols; psi.method "moderated" -> "fixed";
SPIDE_POLISH_GENE_CELL_MATS -> POLISH_GENE_CELL_MATS and the copied
SPIDE_* constants -> POLISH_*; SpaNorm:: prefixes dropped. The two memory
budget options read SpaNorm.polish.mem.budget / SpaNorm.cov.mem.budget
first and fall back to the spiDE option names, so an existing setting
keeps working.

Tests: every direct-W test of spiDE's test-nb-batch.R, test-psi-batch.R
and test-polish-batch.R, in tests/testthat/test-polishEngine.R. Two stay
in spiDE: "spiDE() can reach the reference polish engine" (spiDE(),
buildNiches, .toySPE) and ".reprofilePsi uses the same kernel as the
batched engine" (.reprofilePsi moves with polishNB()).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 50e4ff41d4f54346c440b1c0e804c88b542db308
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 17:33:12 +1000
Commit message:

 Penalised NB Newton solvers and batched grams, moved from spiDE

Task 2 of the polish-to-spanorm plan: the per-gene and batched linear
algebra that fitNB's polish stage needs, moved verbatim from spiDE
(feature/polish-to-spanorm) into SpaNorm as the base for polishNB().

R/nbSolver.R <- spiDE R/polish.R: .absorbBlocks, .newtonSolverBlocked,
.newtonSolver.

R/nbSolverBatch.R <- spiDE R/inference-batch.R: .gramBatch, .segmentSum,
.absorbBatch, .cholBatch, .cholSolveBatch, .newtonSolverBatch, and the
backend helpers (.rowsOf, .setRows, .mulRows, .scaleCols, .asHost,
.matmulB, .rowsFinite, .rowMeansB, .colsOf, .maskedRowMin, .rowMaxB,
.asHostMat, .asLike, .subsetState).

Bodies are byte-identical to the spiDE source modulo stripping the
SpaNorm:: prefix (verified programmatically by extracting all 23
functions from both trees and diffing). .absorbSpec() was left in
spiDE: it is not in this task's function list and is a caller-side
helper for .polishFit(), not part of the solver.

Four thin exported aliases with one roxygen page (man/nbNewtonSolver.Rd,
@keywords internal): nbNewtonSolver, nbNewtonSolverBatch, nbGramBatch,
nbAbsorbGramBatch.

Tests: all 15 test_that() blocks from spiDE's test-solver-batch.R,
test-solver-slope-absorb.R and test-absorb-batch.R moved into one new
tests/testthat/test-nbSolver.R (none call fitSpiDE/spiDE()/toySpiDE/
.toyClustered, so nothing stayed behind). spiDE:::/SpaNorm:: rewritten
to bare calls; the two torch-vs-CPU agreement tests now use SpaNorm's
skip_if_no_torch()/gpu_tol() from helper-gpu.R instead of spiDE's own
pattern.

devtools::test(filter = "nbSolver"): 58/58 pass (torch usable on this
node, so the torch-backed tests ran rather than skipping).
devtools::test() (full suite): 464 pass, 0 fail, 0 warn, 17 skip (all
pre-existing GPU/MPS-only skips) -- no regressions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b5d3f8f3ec905467e49311f0e3e3c8b92b39834b
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun156.hpc.net.uq.edu.au>
Date: 2026-09-25 13:35:43 +1000
Commit message:

 Merge fix/technical-lambda-scaling: scale the SVG null's ridge penalty by ncol(Y) (1.7.12)
 
Package: SpaNorm
Commit: f07f7232c095eecabc6519b914d3d2b8d74173ef
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun148.hpc.net.uq.edu.au>
Date: 2026-09-23 14:27:31 +1000
Commit message:

 Scale the null model's ridge penalty by ncol(Y) in fitSpaNormTechnical()

fitSpaNorm() passes lambda.a.vec * ncol(Y) to fitSpaNormNB() but stores the
raw lambda.a in the SpaNormFit. fitSpaNormTechnical() rebuilt the penalty
from that stored raw value and did not rescale it, so the nested null used
by SpaNormSVG()/svgTest() was penalised ncol(Y) times less on the
library-size terms than the full model (1e-4 vs 0.0395 on a 395-cell core),
making the likelihood-ratio test inconsistent and slightly deflating svg.F.

The stored lambda.a stays raw: matchLambda() compares it against the
user-supplied argument to decide whether a cached fit can be reused.

fitSpaNormTechnical() now also stops if ncol(Y) differs from the full
fit's ncells. Adds a regression test that intercepts the penalty handed to
fitNBGivenPsi() in both fits. Bumps to 1.7.12.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 9f40301bfd31d45b5fa768a6e80488dabffc846d
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun154.hpc.net.uq.edu.au>
Date: 2026-09-08 21:22:15 +1000
Commit message:

 Skip the torch tests when libtorch/lantern is not installed

CI installs the torch R package (it is in Suggests) but never runs
torch::install_torch(), so the libtorch/lantern shared libraries are
absent and every tensor call errors with "Lantern is not loaded".
test-quasilik.R's cpu_tensor() guarded only on skip_if_not_installed(
"torch"), which sees the R package and passes, so the three CPU-tensor
parity tests errored instead of skipping.

The GPU tests were unaffected: checkGPU() -> getBackendDevice() already
tryCatch()es that failure down to "cpu".

Guard them with a new skip_if_no_torch() that probes torch by actually
building a tensor rather than trusting requireNamespace(), resolved once
per run. With the backend absent the suite is FAIL 0 | SKIP 20 | PASS
395 (was FAIL 3); with torch working the tensor branch still runs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNyqumfPxayw9k2AZmrAv1
 
Package: SpaNorm
Commit: de6959484faebb82de605c1cebd6369102ba314b
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun154.hpc.net.uq.edu.au>
Date: 2026-09-08 12:04:19 +1000
Commit message:

 qlMomentTable(): one shared moments table for a blocked caller

qlDispersion() built its (log mu, log phi) table from each call's own
range, so a caller scoring genes in blocks got results that depended on
how the genes were split. qlMomentTable() builds the table once over a
range the caller fixes and qlDispersion(table = ) uses it; lookups outside
the range clamp to the edge, where the moments are asymptotically flat.
Tested: identical per-gene dispersions whole and in two blocks, on the CPU
and on tensors.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: dd63989420abc67370388f94214a90b6c1531b67
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun154.hpc.net.uq.edu.au>
Date: 2026-09-08 09:38:34 +1000
Commit message:

 Quasi-likelihood dispersion (edgeR v4) as generic NB-GLM machinery, CPU and torch

nbUnitDeviance() is the NB unit deviance elementwise over genes x cells,
on the CPU or on the device of a torch tensor input. nbDevianceMoments()
obtains the unit deviance's first two moments under the fitted NB by direct
summation over the pmf -- the definition edgeR's Chebyshev tables
approximate -- and matches them to a scaled chi-square (w0 rescales the
deviance, w1 is the observation's effective df). qlDispersion() gives each
gene's adjusted deviance, effective residual df and their ratio; with
moments = "table" (the default) the moments are evaluated once on a shared
(log mu, log phi) table and bilinearly interpolated onto every gene and
cell, so the per-gene work is elementwise and runs on the accelerator when
the counts and means are tensors. The per-gene grid and per-cell paths are
kept for the oracle tests, which hold the whole pipeline to
edgeR::glmQLFit() at 3e-3 and the table to the per-cell moments at 2e-3.

Used by spiDE 0.99.18 for the standard-error scale of its niche tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: cc381206e51eb7a02e5c0bf3adae47a71fad0f4e
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun133.hpc.net.uq.edu.au>
Date: 2026-08-13 09:03:38 +1000
Commit message:

 Add a supplied-dispersion (psi) passthrough to fitNB()

fitNB() gains `psi = NULL`. When a numeric vector of per-gene NB
dispersions is supplied, the outer dispersion loop is bypassed entirely:
the loop's convergence test exists only to decide when psi has settled,
and a supplied psi is settled by definition. The coefficients therefore
come from a single inner IRLS fit at the given psi. edgeR::estimateDisp
is never called, no dispersion subsample is drawn (the returned
`sampling` factor carries no "dispersion" level -- cells are "glm" if
used for fitting, else "all"), maxit.psi is ignored, and the returned
loglik has one element.

Supplied dispersions are used AS-IS: not re-estimated, and not
winsorised -- the caller owns them, and in the intended use they come
out of a previous fitNB run. They need not come from an identical
design: dispersions estimated on a design nested in (or equal to) the
fitting design are appropriate -- e.g. pooled across a coarser
per-patient model -- which errs conservative.

Validation: numeric, length nrow(Y), finite and strictly positive
(psi feeds size = 1/psi). `psi` composes with `offset`; supplying both
is the motivating downstream use (spiDE stage 1: raw-count fit with the
normalisation linear predictor as a fixed offset and a dispersion pooled
per patient). psi = NULL is a strict no-op, verified as identical output
on a shared seed.

Tests in tests/testthat/test-fitNB-psi.R (30 assertions). The load-
bearing ones, chosen against the deceptive failure mode where psi is
validated and echoed back but the fit runs at something else:

  * the returned loglik must equal the literal NB log-likelihood at the
    returned coefficients and the SUPPLIED psi -- this pins which psi
    the fit actually ran at;
  * fits at p0 and 2*p0 must differ (identical alphas mean the supplied
    psi never reached the IRLS), and the working-weight Wald SEs at
    2*p0 must exceed those at p0 for every gene and coefficient, the
    direction implied by w = mu/(1 + psi*mu) decreasing in psi;
  * refitting at an estimated psi reproduces the original fit within
    IRLS stopping slack (measured ~4e-3; the inner loop's relative-
    loglik tolerance of 1e-4 is not reachable from fitNB()'s arguments,
    so warm- and cold-started fits stop at different points near the
    same optimum -- documented in the test);
  * the pinned-column offset equivalence holds at a supplied psi to
    ~1e-15, exercising the psi bypass and the offset threading together.

Both deliberate breakages are confirmed caught, with the injection
itself verified before each run (deparse at width 500 + a stopifnot
that the substitution took -- last round a line-wrapped deparse made a
mutation silently not apply): (A) supplied psi ignored, outer loop runs
anyway -> psi identity, loglik identity and the p0-vs-2p0 divergence all
fail; (B) psi validated and returned but a different vector handed to
the IRLS -> the psi identity check alone stays green, exactly the
deceptive case, and the loglik identity (off by 4.4e+2) and divergence
(exactly 0) fail.

Existing suite unchanged: 339 passed / 17 skipped, bit-identical per
file to the pre-change baseline. R CMD check: 0 errors, 0 warnings,
0 notes, before and after.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 0791ad9f0713928bc69d674a2336df0c869cb4c3
Author: Dharmesh Bhuva (qris-uq) <uqdbhuva@bun133.hpc.net.uq.edu.au>
Date: 2026-08-13 00:28:26 +1000
Commit message:

 Add a fixed offset to fitNB() and calculateMu()

Both gain an `offset` argument: a genes x cells matrix added to each
gene's linear predictor with its coefficient held at 1, so that
log(mu) = gmean + tcrossprod(alpha, W) + offset.

Why an offset and not another column of W. The motivating consumer
(spiDE's two-stage estimator) needs to remove a library-size effect
SpaNorm has already estimated while modelling all of the biology itself,
from scratch. Added as a design column, that LS term's coefficient floats
during the fit and can absorb biology correlated with sequencing depth --
and depth does correlate with biology, which is exactly why SpaNorm's own
LS spline needs a biology anchor to keep from over-correcting. Held at
exactly 1, the known effect is subtracted rather than re-estimated, and
that leak is closed.

The offset enters in four places, not one:

  * the log-likelihood (.blockedNBLoglik);
  * the IRLS alpha update, where the working response becomes
    Z - gmean - O, since the offset's contribution is not being fitted;
  * the is.spanorm gmean fold, for the same reason;
  * edgeR::estimateDisp()'s own offset -- the easiest of the four to
    miss and the most quietly damaging, because dropping it leaves the
    coefficients plausible while inflating every gene's dispersion, and
    with it the Wald variances a downstream caller derives from psi.

It is subset by `idx` alongside the counts and sliced per gene-block in
step with them. All offset slicing goes through one helper
(.blockOffset), because a mis-sliced offset neither errors nor fails to
converge -- it converges to the wrong answer.

offset = NULL is a strict no-op, so every existing caller is untouched:
all 15 calculateMu() call sites, SpaNorm(), SpaNormSVG(), SpaNormPCA().
The existing test suite passes unchanged, 287 passing expectations and
16 GPU skips, identical before and after.

New tests in tests/testthat/test-fitNB-offset.R. The two that matter:

  * EQUIVALENCE. Fitting design [(1+c)w, x] with no offset, and design
    [w, x] with offset c*w, are the same model written two ways; both
    start from the same alpha initialisation, so every iteration must
    coincide -- same log-likelihood, same dispersions, same fitted means
    -- while the coefficients differ by exactly what a unit coefficient
    on the offset accounts for. Holds to ~1e-15, including for the Wald
    standard errors built from the fit, and separately for a gene-varying
    offset and in the small-n regime the downstream consumer runs in.
  * MULTI-BLOCK. A gene- and cell-varying offset gives identical results
    (~1e-15) at 1, 2 and 5 gene-blocks and in the one-gene-per-block
    limit.

Both carry controls, because an identity that holds trivially proves
nothing: a fit frozen at its initialisation would satisfy either one, so
each asserts the fit moved; and an offset rotated by one gene, or by one
cell, must move the answer (it does, by ~1e-1 against a 1e-10 tolerance).

Each site above was then broken deliberately, one at a time, to confirm
the assertions fail when it is: dropping the offset from the log-mean or
from the working response breaks the equivalence by 1.9; dropping it from
the gmean fold breaks gmean by 9.8e-3 against a 1e-8 tolerance; and
dropping it from the dispersion offset -- either inside the helper or by
never passing it at the call site -- moves psi by 0.27 and the Wald
standard errors by 23%, while leaving the coefficients within 1%. That
last one is why the equivalence fixture uses a CELL-VARYING offset: under
a constant offset, edgeR's per-gene intercept absorbs it, the dispersion
step is genuinely indifferent to whether it is passed at all, and an
assertion on psi cannot fail. The first version of these tests had that
blind spot; the mutation pass is what found it.

The GPU path is IMPLEMENTED BUT UNVERIFIED. It is written through the
same backend-agnostic helpers as the rest of the fit (toGPUMatrix,
add_vec_mat_gpu, tcrossprod_gpu), so it should follow, but no h100 was
free to run the fp64 smoke and no accelerator has ever executed this
code. test-fitNB-offset.R carries a skip_if_no_gpu()-guarded
blocked-vs-unblocked test that will exercise it on the first run on a
real device; until that passes, treat the GPU path as unproven. Use an
h100-class device to check it: fp64 digamma inside the dispersion step
fails on an a100, and not at startup, so a toy fit green-lights it
wrongly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 1fa360e159a2a1368ce87243eb3cc776fb0011c2
Author: dbhuva <d.bhuva@uq.edu.au>
Date: 2026-07-27 12:51:43 +1000
Commit message:

 Fix getGPUMemoryBudget() reporting the physical GPU's memory instead of the assigned MIG slice's

nvidia-smi's `-i` flag, given a bare integer index, targets its own
system-wide physical-GPU enumeration -- unaffected by CUDA_VISIBLE_DEVICES.
Under NVIDIA MIG partitioning the job scheduler confines a process via
CUDA_VISIBLE_DEVICES=MIG-, but nvidia-smi never sees that
restriction, so `-i=<torch::cuda_current_device()>` silently queried the
whole card's free memory rather than the assigned slice's -- a many-fold
overestimate that fed directly into downstream batch-sizing and caused
real CUDA OOMs (reported via spiDE on a MIG-partitioned A100).

torch's R package exposes no MIG-aware alternative: cuda_memory_stats()/
cuda_memory_summary() report only PyTorch's own allocator bookkeeping, and
cuda_get_device_properties() isn't exported. Fixed by resolving the
correct nvidia-smi `-i` target through CUDA_VISIBLE_DEVICES instead of the
bare index (also fixes a latent non-MIG bug where a job restricted to
e.g. CUDA_VISIBLE_DEVICES=2,3 would have queried physical GPU 0). Adds
setGPUMemoryBudget() so callers can bypass auto-detection entirely when
it remains unreliable.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
 </pre>
    </div>
  
    
Package: SpaNorm
Commit: 186ffd3682b77a255839d843fcd2cb8ba90dd257
Author: dbhuva <d.bhuva@uq.edu.au>
Date: 2026-07-24 21:26:21 +1000
Commit message:

 Fix R CMD check failure: guard getBackendDtype()'s example against a missing Lantern install

getBackendDtype() calls torch::torch_float64()/torch_float32() unconditionally
(unlike every other torch-touching helper in this file, which gates on
checkGPU()), so its own standalone example crashed R CMD check on the macOS
CI runner where torch is installed but its native Lantern library isn't
loaded -- halting the combined example script before any function
alphabetically after it could run. Gate the example the same way every
other GPU-aware example in this file already does.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: 0d5eaea99a55204c5af8832356ddb2a7709e2a34
Author: dbhuva <d.bhuva@uq.edu.au>
Date: 2026-07-24 19:48:16 +1000
Commit message:

 Export the generic GPU device/tensor layer for downstream packages

spiDE calls SpaNorm::calculateMu()/invert_mat() directly for its own
per-gene Wald inference, outside fitNB(), so it never benefited from
the memory-aware GPU blocking added to fitNB()'s internal IRLS loop.
Exports the reusable device/dtype resolution, memory-budget detection,
tensor conversion, and generic linear-algebra helpers from gpuFunctions.R
(no NB-specific logic), adds a batched invert_mat_batched() for
per-gene/per-feature covariance workloads SpaNorm itself never needs
(its own model shares one coefficient across all genes), and makes
calculateMu() dispatch to the accelerator when requested (backend
defaults to "cpu", preserving its exact prior behaviour for existing
internal callers that assume a plain matrix comes back).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
 
Package: SpaNorm
Commit: b32dadec2cd8593d1fd5178468acb53579f58ff9
Author: dbhuva <d.bhuva@uq.edu.au>
Date: 2026-07-24 09:26:29 +1000
Commit message:

 Add memory-aware gene-blocked GPU fitting to avoid OOM on limited-VRAM GPUs

Auto-detects available accelerator memory (nvidia-smi for CUDA, a
system-memory fraction for MPS) and fits the IRLS model in contiguous
gene-blocks sized to the budget, overridable via a new gpu.mem.budget
parameter. The blocked and non-blocked code paths are unified into a
single implementation (a single whole-gene block when the problem
already fits), removing ~150 lines of duplicated tensor-fitting logic.

Verified against the pre-existing CPU/GPU baseline and a block-count
sweep on both real (HumanDLPFC) and simulated data: results match
within a small floating-point tolerance from summation-order
differences; CPU results are unaffected regardless of block count.

Bump version to 1.7.5; document the feature in NEWS.md and the
vignette's "Scaling to large datasets" section.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
 
Package: gDRimport
Commit: 72351b459390999483042ee1088304a14b6e6e38
Author: Arek Gladki <41166437+gladkia@users.noreply.github.com>
Date: 2026-10-19 10:56:38 +0200
Commit message:

 Merge pull request #128 from gdrplatform/GDR-3637

fix: let an explicit instrument read .tsv results files 
Package: gDRimport
Commit: 1d2257ab23f442ef6f001210676738d347efd95d
Author: Arkadiusz Gladki <gladki.arkadiusz@gmail.com>
Date: 2026-10-16 11:45:12 +0200
Commit message:

 docs: say when a .tsv results file is read as long_tsv
 
Package: gDRimport
Commit: f8d58c6aed46c0a4ad5cf0b888b707935146499c
Author: Arkadiusz Gladki <gladki.arkadiusz@gmail.com>
Date: 2026-10-14 08:17:52 +0200
Commit message:

 fix: let an explicit instrument read .tsv results files
 
Package: exploreSE
Commit: e5c572753b226e6228473ef30d4e510004b23688
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-19 10:06:58 +0200
Commit message:

 readme and vigentte fixes
 
Package: exploreSE
Commit: 13b7940605474486251404029426282870d515e8
Author: Jasper Spitzer <97746217+jaspitzer@users.noreply.github.com>
Date: 2026-10-19 09:49:41 +0200
Commit message:

 edit readme
 
Package: MGnifyR
Commit: 60edae14f4438ffab5d05c5f3cfc0ffd2b37e9d8
Author: Tuomas Borman <tvborm@utu.fi>
Date: 2026-10-19 11:02:40 +0300
Commit message:

 Document package with "_PACKAGE" instead of deprecated @docType

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 
Package: MGnifyR
Commit: cd8da38b488c8e4b338c8c09109f6d1a622db86e
Author: Tuomas Borman <tvborm@utu.fi>
Date: 2026-10-19 10:58:55 +0300
Commit message:

 getResult returns NULL with a warning instead of failing when no data could be fetched
 
Package: SpatialFeatureExperiment
Commit: 5dccfd78b644f8d31959f95e5dacfb0d5621d9a6
Author: Lambda Moses <lambda.calc29@gmail.com>
Date: 2026-10-19 15:49:36 +0800
Commit message:

 Still prefer scater for PCA
 
Package: SpatialFeatureExperiment
Commit: ea1913f9a9338a216cf01df7ee08a5b5525f88a3
Author: Lambda Moses <lambda.calc29@gmail.com>
Date: 2026-10-19 15:49:16 +0800
Commit message:

 Fixed image misalignment in Visium
 
Package: SpatialFeatureExperiment
Commit: 17f9946d671e40864454be55dc725339dafdbaed
Author: Lambda Moses <lambda.calc29@gmail.com>
Date: 2026-10-09 17:25:51 +0800
Commit message:

 Draft
 
Package: tidySummarizedExperiment
Commit: cb3f3a8fa4bbe1e0591ef52b43137036dcb4c918
Author: Stefano Mangiola <mangiolastefano@gmail.com>
Date: 2026-10-19 11:44:37 +1030
Commit message:

 Merge pull request #126 from tidyomics/copilot/fix-filter-non-syntactic-names

Preserve non-syntactic colData names in filter() 
Package: tidySummarizedExperiment
Commit: 1bd6062d0e95d0f46fad2de2c368c6b77399c42a
Author: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Date: 2026-08-20 04:56:40 +0000
Commit message:

 Preserve non-syntactic colData names in filters

Co-authored-by: stemangiola <7232890+stemangiola@users.noreply.github.com>
 
Package: tidySummarizedExperiment
Commit: 28a5bbd10c9fef8d24fea8f2bdd9446b273473e5
Author: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Date: 2026-08-20 04:49:41 +0000
Commit message:

 Initial plan
 
Package: OmicsMLRepoR
Commit: 336d44dcee49cad9d655c08e54ce3a1aa5ee0035
Author: Sehyun Oh <shbrief@gmail.com>
Date: 2026-10-18 20:51:26 -0400
Commit message:

 version bump

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
 
Package: OmicsMLRepoR
Commit: 68b948dd348d7439c1475c7bb7506adefed362ef
Author: Sehyun Oh <shbrief@gmail.com>
Date: 2026-10-18 17:39:54 -0400
Commit message:

 add citation information for the Database paper

Add inst/CITATION with the bibentry for Long et al. (2026), Database
2026:baag027, so citation("OmicsMLRepoR") returns the paper rather than
R's auto-generated package default. Add a matching Citation section to
the README.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
 
Package: AnnotatedBCGEData
Commit: 78b87775b3157092ebc4f84cfea9aca0abe6b0f3
Author: Heidi <heidi.climber@gmail.com>
Date: 2026-10-18 15:05:54 -0600
Commit message:

 updates to final mapping files
 
Package: systemPipeRdata
Commit: 1752dc0d29f7aa254cca06352dd0e11cc015b8ad
Author: tgirke <tgirke@citrus.ucr.edu>
Date: 2026-10-18 13:22:04 -0700
Commit message:

 Version bump 2.17.2
 
Package: systemPipeRdata
Commit: 3de4470146d822653d55072ec5877cf5e6ae0eab
Author: tgirke <tgirke@citrus.ucr.edu>
Date: 2026-10-18 13:22:04 -0700
Commit message:

 Fix BiocCheck errors: Authors@R, install.packages, runnable examples; ExperimentData biocViews

- DESCRIPTION: Authors@R replaces Author/Maintainer; biocViews switched to
  ExperimentData terms (BiocCheck classified the package as Software);
  crayon added to Suggests (used via crayon:: in vignettes)
- R/dataenv.R: drop unreachable install.packages('remotes') (remotes is
  in Imports); NAMESPACE: drop utils::install.packages import
- NAMESPACE: import stats::setNames
- Runnable examples for genWorkenvir_gh, getParam_gh (small GitHub repos,
  written to tempdir()) and getData_gh (no-manifest case, no download);
  getSPRdata example wrapped in if (interactive()) (175MB download)
 
Package: gDRcore
Commit: f2cfbde8ceee48a4a0eddb842d24835b50987ced
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-18 22:24:37 +0200
Commit message:

 Merge pull request #215 from gdrplatform/GDR-3701

feat: record the import step in the SE provenance 
Package: gDRcore
Commit: 967bff8b86514dca87d9b33f34e0f9755435e0b7
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-18 18:47:11 +0200
Commit message:

 Merge branch 'GDR-3699' into GDR-3701

# Conflicts:
#	DESCRIPTION
#	NEWS.md
 
Package: gDRcore
Commit: 6582d86b764d673e1886a2922162fe05e539e311
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:16:55 +0200
Commit message:

 Merge branch 'GDR-3699' into GDR-3701
 
Package: gDRcore
Commit: f3c3b6d7fd64bf05b24d06cab830dc88ee903178
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 12:52:49 +0200
Commit message:

 chore: bump version to 1.11.21 and update NEWS
 
Package: gDRcore
Commit: 7d3805a9501c778d630dd8e8ca7cb6a828936e08
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 12:52:49 +0200
Commit message:

 test: cover the import step and merge_data() keeping the record
 
Package: gDRcore
Commit: 5cdfee34cc1f3eb81aee49532cd6253ffc8ae413
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 12:52:49 +0200
Commit message:

 feat: record the import step from the gDRimport record of the input data
 
Package: Rsubread
Commit: 782507abca1ef2223906ed327d4e27ae4d93bb52
Author: Yang Liao (Monash University) <yliao@m3-login2.massive.org.au>
Date: 2026-10-19 07:23:21 +1100
Commit message:

 removed a warning caused by unused variable in Makevars.Linux.
 
Package: gDRcore
Commit: 1a3b068e1d8d57b5b1d54791c007792f379b4d7f
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-18 21:59:45 +0200
Commit message:

 Merge pull request #214 from gdrplatform/GDR-3699

feat: record the processing steps in the SE provenance 
Package: gDRcore
Commit: 2badd81d257c9648241c1a2921f86c21df7428f5
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-18 18:43:50 +0200
Commit message:

 Merge branch 'GDR-3698' into GDR-3699

# Conflicts:
#	DESCRIPTION
#	NEWS.md
 
Package: gDRcore
Commit: e7cad49ab271b18c7cad9a26b2065e2b88e39de9
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:16:54 +0200
Commit message:

 test: check the message about missing GR values
 
Package: gDRcore
Commit: 4496b42c8a811e2b112aa330757b2e2e9bd20189
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:16:54 +0200
Commit message:

 fix: log the cell lines without a GR value as one short line
 
Package: gDRcore
Commit: fbbf615d07749e771885abd4f0fbe4c9443fdcef
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:15:46 +0200
Commit message:

 Merge branch 'GDR-3698' into GDR-3699
 
Package: gDRcore
Commit: 4f5f1520bca14b1ffd000778690c9d5d1313ddca
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 10:13:31 +0200
Commit message:

 test: check that re-running the pipeline on its output records the same steps
 
Package: gDRcore
Commit: ff557e11aa48f5f45efb71995e3b811cbe58b566
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 10:13:31 +0200
Commit message:

 fix: keep the input format out of the create step so a re-run from an MAE matches
 
Package: gDRcore
Commit: 7b0dfbceee41360c6b5a059d2a171485166b8246
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 09:22:57 +0200
Commit message:

 chore: bump version to 1.11.20 and update NEWS
 
Package: gDRcore
Commit: 7c68dc354db29a1c20666ff063ffb6a7bdd61822
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 09:22:57 +0200
Commit message:

 test: cover the provenance of the processing steps
 
Package: gDRcore
Commit: 43a0ad788ad0a3d884a89e85baffd61625e37963
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 09:22:57 +0200
Commit message:

 feat: record the create, normalize and average steps in the provenance
 
Package: gDRcore
Commit: 173f54b339a22ca7ae6b4ca143de1f6a3b23c842
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 09:22:57 +0200
Commit message:

 refactor: share the GR method choice between calculate_GR_value() and normalize_SE()
 
Package: GExPipe
Commit: ab9f23fa643a891feb3964ac5821a29607a6a635
Author: SAFA RAFIQUE <safa.sandhu@gmail.com>
Date: 2026-10-19 00:53:08 +0500
Commit message:

 Sync with GitHub main: GExPipe 0.99.116
 
Package: gDRcore
Commit: 7a3913712a7368faa2b2295c819a960ec056ee10
Author: Bartek <32614650+bczech@users.noreply.github.com>
Date: 2026-10-18 21:32:26 +0200
Commit message:

 Merge pull request #213 from gdrplatform/GDR-3698

feat: record the provenance of gDRcore fits 
Package: gDRcore
Commit: 21c3b541e19b3bbf05a01c68da8b1d4b30a9790d
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-18 18:39:54 +0200
Commit message:

 Merge remote-tracking branch 'origin/main' into GDR-3698

# Conflicts:
#	NEWS.md
#	tests/testthat/test-fit_SE.R
 
Package: gDRcore
Commit: fe8c12366a9e9bb889b76f7c3b1e760961644a32
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:15:18 +0200
Commit message:

 test: check that fit_SE.timecourse() rejects fit_args with the default fit
 
Package: gDRcore
Commit: 9e1dff1f31c65488577677f42cad7e5f6a2bb72b
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-15 20:15:18 +0200
Commit message:

 fix: reject fit_args in fit_SE.timecourse() when the default fit would drop them
 
Package: gDRcore
Commit: b3cf69aa5bac08df1d5b52b4c8b635ca8ec76af8
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-14 16:34:06 +0200
Commit message:

 chore: bump version to 1.11.19 and update NEWS
 
Package: gDRcore
Commit: deca4236bbf0b5d8c05f25f24f8b298cfdfe256f
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-14 16:34:06 +0200
Commit message:

 test: cover the provenance of single-agent, combination and time-course fits
 
Package: gDRcore
Commit: a61dd7ea30a0669200e09b3786c61229ff150c0d
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-14 16:34:05 +0200
Commit message:

 docs: explain fit provenance in the custom fitting vignette
 
Package: gDRcore
Commit: 11829cf6b6a8c47085850fbf4014a4bf8a8b2a51
Author: Bartek Czech <bartosz.w.czech@gmail.com>
Date: 2026-10-14 16:34:05 +0200
Commit message:

 feat: describe the combination and score functions in their recipes
 

</div> </div>