Release Notes¶
Version 1.6.0: September 30, 2026¶
General:
- Increased required version of alakazam to >= 1.5.0.
hierarchicalClonesnow uses alakazam’s C++ Hamming distance implementations (fastDist,fastDistAA) and passes theirdistoutput directly tohclust, reducing memory usage for large VJL groups whenIUPAC=FALSE.
Clonal analysis:
hierarchicalClonesandidenticalClonesnow allow amino acid junction sequences ifmethod="aa". Previously, thejunctioncolumn was always assumed to hold nucleotide sequences and translated before clustering.- Added a
junction_typeargument ("auto","nt","aa") toidenticalClones,hierarchicalClones, anddefineClonesScoper. It lets users declare whetherjunctionholds nucleotide or amino acid content whenmethod="aa", instead of relying on auto detection, which cannot reliably tell apart short amino acid junctions made only of letters shared with the nucleotide alphabet (e.g."CARDST"). - Expanded the
IUPACparameter inhierarchicalClonesto bothmethod="nt"andmethod="aa". - Improved clonal clustering speed with a new Alakazam C++ Hamming distance implementation
for amino acid sequences (
fastDistAA) ifmethod="aa"andIUPAC=FALSE(default).
Bug fixes:
- Fixed
identicalCloneswithmethod="aa": translated amino acid junctions were computed but never used for grouping, so clustering was actually based on the untranslated nucleotide sequences, incorrectly splitting synonymous junctions into separate clones. - Fixed
identicalClones,hierarchicalClones, andspectralClonesin single-cell mode withsummarize_clones=TRUE:vjl_groupsandinter_intracould referenceclone_idvalues no longer matching those indb, due to clone ids being renumbered again after merging light chain data without updating those summaries. (Issue #52) - Updated how scoper decides whether the junction/cdr3 column holds nucleotide or amino acid
sequences. The decision is now made
once per dataset.
mod3=TRUEis now ignored (with a warning) for amino acid junctions, since length says nothing about reading frame for amino acids. A warning is also issued whenmethod="aa"is set but no sequence in the data can be confirmed as amino acid.
Version 1.5.0: May 5, 2026¶
Clonal analysis performance:
- Added
IUPACparameter tohierarchicalClones. WhenIUPAC=TRUE, sequences containing IUPAC ambiguity codes are retained and distances are computed using an IUPAC-aware substitution matrix (viaalakazam::pairwiseDist). This was the default behavior of previous versions ofhierarchicalClones. - Improved clonal clustering speed in
hierarchicalCloneswith a new C++ Hamming distance implementation (fastDist_rcpp), used whenIUPAC=FALSE(default) andmethod="nt". WithIUPAC=FALSE, sequences containing IUPAC ambiguity codes (e.g., R, Y, W, S, M, K) are rejected; only standard bases (A, T, C, G), N, and ? are allowed.
Bug fixes:
- Fixed a floating point precision error in
hierarchicalCloneswith average linkage that causedhclustto fail. Distances are now rounded before retrying if the initial call fails.
Version 1.4.0: January 7, 2026¶
General:
- Development of
scoperhas moved to GitHub: https://github.com/immcantation/scoper. - Updated dependencies alakazam >= 1.4.1, shazam >= 1.3.0, fastcluster.
- Scoper now uses the
hclustfunction from thefastclusterpackage instead of the one fromstatsto perform hierarchical clustering on large vjl groups (greater than 65,536 unique sequences).
Clonal analysis:
- Clonal identification methods now have deprecated
only_heavyandsplit_light. All clonal identification methods now cluster by heavy chain only. To split clones by light chain groups usedowser::resolveLightChains. - In
hierarchicalClones, the default value ofsummarize_clonesis nowFALSEfor improved performance. Users can setsummarize_clones=TRUEwhen needed.
Version 1.3.1: August 1, 2024¶
Documentation:
- This is a documentation-only update to address changes in Read the Docs.
Version 1.3.0: October 5, 2023¶
General:
- Updated dependencies alakazam >= 1.3.0, shazam >= 1.2.0, ggplot2 >= 3.4.0.
- Added a
locuscolumn to the package’s example data, to satisfy alakazam >= 1.3.0 requirements.
Version 1.2.1: September 21, 2022¶
Bug fixes:
-
Fixed a bug
defineClonesScoperwhere the bulk clonal clustering was using light chain sequences. Now, light chain sequences are removed based on thelocusinformation. If the columnlocusdoes not exist, it is created withalakazam::getLocus(v_call). -
Fixed a bug in
defineClonesScoperwhere thesplit_lightpart of the algorithm was reanalyzing heavy chain v_calls and using this information to sometimes split clone_id groups into subgroups. Only light chain v_calls should be used for this. The bug could be observed in situations wherefirst=FALSEand the ‘linker’ ambiguous heavy chain v_calls were left out of the same clone_id group because of the junction distance threshold. -
Fixed parallelization setup for
defineClonesScoper.
General:
- Improved hierachical clustering performance.
Version 1.2.0: November 2, 2021¶
General:
- Updated dependencies to R >= 4.0, ggplot2 >= 3.3.4, dplyr >= 1.0, alakazam >= 1.2.0, and shazam >= 1.1.0.
- Changed the internal definition of degenerate characters from
Nto any characters except[ATCG].
Cloning:
- Added
fieldsargument toidenticalClones,hierarchicalClonesandspectralClonesto allow for data partitioning prior to clonal assignment. - Fixed a bug in the cloning functions causing an error in single-cell mode when the input data contains only heavy chains.
Version 1.1.0: August 10, 2020¶
- Fixed a bug in the clonal clustering methods causing TCR data to fail.
- Added support for single-cell data in the clonal clustering methods, which
are enabled by defining the optional
cell_idcolumn.
Version 1.0.1: May 24, 2020¶
- Fixed a fatal error in
identicalClones,hierarchicalClonesandspectralCloneswhen specifyingnproc> 1.
Version 1.0.0: May 15, 2020¶
Backwards Incompatible Changes:
- Changed default expected data format from the Change-O data format to the
AIRR Rearrangement standard. For example: where functions used the column
name
V_CALL(Change-O) as the default to identify the field that stored the V gene calls, they now usev_call(AIRR). That means, scripts that relied on default values (previously,v_call="V_CALL"), will now fail if calls to the functions are not updated to reflect the correct value for the data. If data are in the Change-O format, the current default valuev_call="v_call"will fail to identify the column with the V gene calls as the columnv_calldoesn’t exist. In this case,v_call="V_CALL"needs to be specified in the function call. ExampleDbconverted to the AIRR Rearrangement standard and examples updated accordingly.- Split
defineClonesScoperfunction to three functions:identicalClones,hierarchicalClones, andspectralClones.
General:
- License changed to AGPL-3.
Cloning:
- Fixed a platform precision incompatibility bug which caused spectral cloning results to be non-reproducible across platforms.
- Added largest distance-to-nearest filter to clustering process.
Version 0.2.0: August 5, 2019¶
Deprecated:
- function
analyzeClonesis deprecated. The clonal analysis has been added to the main functiondefineClonesScoperas an argumentanalyze_clones. - the out put class is deprecated. Results would be reported as a list if
argument
analyze_clonesset to be true, otherwise a single dataframe is returned. plot_neighborhoodsfrom clonal analysis has been deprecated.neighborhoodsfrom clonal analysis has been deprecated.
General:
- New models,
hierarchicalfor hierarchical-clustering based, andidenticalfor clustering among identical junction sequences are added. - New method for spectral-clustering based model has been added through the
vjin argumentmethod.
Clonal analysis:
- Switched the meaning of the “inter” and “intra” labels in
calculateInterVsIntrafunction. Now, “inter” is the label used to form distances that mean between clones, and “intra” is the label used to form distances that mean on the inside, within each clone. - Changed the
plotInterVsIntraoutput from a density plot to a histogram. - Changed the way to calculate the effective threshold. Now, desntiy approach is used.
Version 0.1.0: October 4, 2018¶
Initial public release.