Changelog
Source:NEWS.md
scop (development version)
fix:
RunRCTD(),RunCARD()andRunSPOTlight()align reference labels and metadata to selected-assay cell IDs before filtering, including assays containing only part of a Seurat object. Ambiguous IDs are rejected. RCTD preserves full selected-assay library depths through analysis-gene selection; zero-count filtering still uses the selected shared features.fix:
GetSpatialResult()returns current-object cells in their current order and recomputes BANKSY and PRECAST count summaries after subsetting. New BANKSY fits and detailed SmoothClust, CHOIR, RareQ and PRECAST results retain private per-cell identities, including same-ID-set renames. SmoothClust cell-column storage and CHOIR explicit cell IDs are handled correctly. Missing or invalid provenance reports a clear error. Stored native fit results remain unchanged, and compatible legacy metadata reads are retained.refactor: Remove unused internal helpers and Rcpp bridges, share spatial neighborhood filtering and heatmap border preprocessing, and drop redundant Imports checks and obsolete ggplot2 compatibility code.
change: Migration:
RunBANKSY(assay = NULL)now prefers the selected image’s assay, thenSpatial,RNA, andDefaultAssay; setassayexplicitly to reproduce analyses that used a different assay.change: Migration:
RunBANKSY()now reports its actual inputs and result locations andGetSpatialResult()reads clusters, parameters, and summaries; useverbose = FALSEto suppress receipts orstore_results = FALSEto omit detailed stored results. A lightweight retrieval index still records custom cluster columns and exact sample membership, including overlapping names such asS1andS1_A. Sample-specific access to legacy metadata without an index requires rerunning BANKSY; cluster labels alone cannot identify samples safely.change: Migration: set
sample.byto fit BANKSY separately by sample; combined domain labels are sample-prefixed and are not aligned across samples.fix: C++ gene-set scoring uses GSVA >= 2.6 defaults when the optional GSVA package is absent, avoiding version-probe errors in sparse
RunGSVA()z-score and PLAGE scoring. Installed GSVA versions retain their existing standardization and sparse-walk behavior.fix:
RunDEtest()and native spatial APIs now distinguish an omittedobjectfrom an explicitly suppliedobject = NULLwhen resolving the deprecatedsrt=alias. A non-NULLsrt=supplied alongsideobjectfollows the shared duplicate-input error behavior. The alias remains supported with a deprecation warning until scop 1.0.0, when its removal is scheduled.fix:
RunGSVA(),CellScoring(),RunDynamicEnrichment(),RunCellRankEnrichment(),AnnotateFeatures()andRunMetabolism()normalize Latin species names before database lookup. Lowercase names and space, dot or hyphen separators now resolve to the same annotations asHomo_sapiensandMus_musculus, avoiding missing-input errors and silently skipped databases.chore: Remove
RfastfromSuggestsafter confirming it has no SCOP source, test, documentation, native, build-script, or CI use.change:
RunPropeller()now uses speckle’s transformed proportions and empirical Bayes moderated tests instead of the internal logit t-test. It supportstransform,robust,trend, records backend results and designs, and blocks on donor IDs for fully paired comparisons. At least two samples per condition are required. SCOP bootstrap intervals remain descriptive intervals for the untransformed proportion ratio.fix:
RunCytoSPACE()samples singleton reference types without selecting cells from other types, preserves cell labels that collide after metadata name conversion or with the total-count column, and reports no dominant type for zero-cell spots. Empty assignments are supported; stored results record the collision-safe metadata suffixes and total-count column name.change: Database preparation now exposes independent
PrepareGO(),PrepareKEGG(),PrepareMSigDB()and other source interfaces.PrepareDB()dispatches to these interfaces, with shared annotation caching and conversion. Combined model and custom annotation requests retain their existing structure. Chromosome mappings are resolved from the annotation namespace on first use.feat: Add experimental IREA analysis and plots with unified object inputs, explicit contrast provenance and checksum-checked reference preparation through
PrepareDB(db = "IREA_<cell type>"), alongside annotation databases. Plots reuseplot_typeandpadjustCutoff; diagnostics use the shared logging interface. Numerical equivalence to the official portal remains unestablished.change:
label_insitunow defaults toTRUEinCellDimPlot(),FeatureDimPlot(),PAGAPlot(), and CCC embedding-network plots, solabel = TRUEshows group names (or cluster IDs) directly on the plot instead of renumbered labels that must be matched through the legend. Setlabel_insitu = FALSEto restore the numbered labels.fix: Differential-abundance plots now project Milo neighborhoods through stored member cells, use
SpatialFDRfor Milo neighborhood significance, and use scCODA credibility for scCODA plots. Milo group summaries and the internal Propeller-style test now report their statistical provenance.fix: Sample-level abundance tests preserve sample-condition units and support fully paired donor IDs in Milo and the internal Propeller-style test. Permutation testing now honors
seed.change: Milo, scCODA, and Propeller require biological
sample.byby default.allow_pseudo_samples = TRUEretains virtual samples for descriptive effects, with inferential statistics marked unavailable.fix:
ProportionTestPlot()acceptsresult_level = "neighborhood"for stored Milo neighborhood-level results.fix: Preserve scCODA’s
"automatic"reference-cell selection inRunscCODA()and reject unknown explicit references instead of silently using the first cell type.fix:
PrepareDB()returns only the requested MSigDB collections after caching the other generated subsets. A cached subset loads the baseMSigDBdatabase before converting gene IDs, and falls back to the normal ID conversion when that database does not contain the requested columns.fix:
PrepareDB()keeps nested MSigDB collections. Names such asMSigDB_M2_CGP,MSigDB_M2_CPandMSigDB_M2_CP_BIOCARTAselect those subsets, parent names such asMSigDB_M2still include every nested collection, and colon forms such asMSigDB_M2:CGPare accepted. An unknown MSigDB name reports the available collections instead of failing incomplete.cases(). A cached top-level collection stays usable; requesting a nested name that is not cached rebuilds MSigDB.fix:
RunNMF()supports the CRANRcppMLrelease: sparse input no longer needsMatrixattached by the caller, the attach is scoped to the call, andcheck_r()no longer replaces an installed CRAN build with the GitHub one.fix: The native Gaussian GSVA kernel follows the sparse scoring walk of the installed
GSVArelease (<= 2.4 and >= 2.6), soRunGSVA()andCellScoring()matchbackend = "r"on either engine; explicitly stored zeros are dropped before scoring.perf: The native Gaussian GSVA walk only evaluates the running-sum extremes at the gene-set hit positions: ~2.8x faster than the previous walk and ~50x faster than the delegated GSVA path on a 2,000 x 1,000 matrix with 400 gene sets.
fix:
RunSpatialNeighborhood()returns observed label-pair tables in a deterministic, backend-independent row order, so the cpp and reference R backends produceidentical()results; a backend parity regression test is added.fix: PRECAST consumes the explicitly selected raw-count matrix and defaults to SCOP’s exact distance-based six-neighbor adjacency instead of interpreting image pixels as array indices or using PRECAST’s axis-restricted neighbor candidates. The matrix follows PRECAST’s column-neighbor convention. Empty/invalid spatial graphs and non-finite integration outputs fail before results are written; stored parameters include the graph builder, backend arguments and edge counts.
fix: SpatialCellChat recognizes imported Visium HD and HD bin assays, requires explicit HD pixel-to-micron calibration and tolerance, and does not classify Visium spot/bin images as segmented cells merely because they inherit FOV.
fix: Spatial variable feature surfaces inherit their saved assay, layer, image and coordinate columns. Backend feature IDs and p/q ranges are validated; missing BH-adjusted values use the complete supplied p-value family.
breaking: Thread counts are named
coresthroughout.RunLargeVis(),RunUMAP2(),RunSmoothClust(),RunscMalignantFinder(),RunSecAct(),RunMERINGUE(),RunSpatialEcoTyper()andRunCHOIR()no longer accept the backend-specificn_threads,n_thread,ncoresandn_coresargument names, and then_threads/n_threadvalues thatRunCIBERSORT()and the AUCell scoring path previously accepted through...are gone as well;coresis forwarded to each backend under the name that backend expects.feat:
FeatureDimPlot()defaults assay-gene headings to italic and supportstitle.faceplus scalar or feature-namedtitle.color, preserving numeric metadata headings and expression palettes.fix: Resolve the thisutils Python logger from
scripts/, with compatibility for older installations usingpython/, in both reticulate imports and subprocess runners.fix: Dependency checks use the default
check_r()behavior, allowing missing packages to be installed during analysis. Dependencies can also be installed ahead of time throughPrepareEnv().perf: The scVelo backend builds the velocity transition, the terminal states and the pseudotime as sparse matrices instead of dense cell-by-cell ones; at 50,000 cells the velocity graph drops from about 56 GiB to 11 MiB. The terminal states and pseudotime now use iterative eigensolvers, which can return fewer regions than the previous dense implementation when the graph contains several near-closed classes, and this path requires
RSpectra.fix:
CNVPlot(plot_type = "heatmap")honours its documentedheatmap_palettethroughthisplot::palette_colors()instead of ignoring it, andSCENICPlot()resolves its automatic reduction throughDefaultReduction().docs:
IntegrationBenchmarkPlot()documents its real workflow, andRunDeconvolution()documents the MuSiC path.fix: Align the C++ ports with their reference implementations:
RunPalantir(backend = "cpp")uses the reference Markov-chain bandwidth and pins the start waypoint pseudotime to zero,RunCellRank(backend = "cpp")reports lineage-driver p-values from the Fisher z transform instead of a Cauchy tail, andRunSCVELO(backend = "cpp", mode = "stochastic")applies the reference 95% percentile weighting mask. Existing results for these methods change accordingly.fix:
RunPCA()takescoresand forwards it to the native backend, which bounds its BLAS calls instead of always using the process default. The bound only applies when the linked BLAS exposes a thread-count setting (OpenBLAS or MKL); the Windows reference BLAS has none.fix:
RunscTenifoldKnk()restores the previous OpenMP and BLAS thread counts on exit instead of leaving them changed for the rest of the session.fix:
RunCHOIR()checks and installs its pinned backend when needed, and reports installation failures.fix:
RunSCENIC()requiresarrowfor its ranking databases and reports the missing package instead of silently falling back to a rank-based approximation.refactor: Use the thisplot Pastel1 palette for volcano enrichment overlays instead of a hard-coded palette.
refactor: Keep fixed method lists, resource filenames, and internal contract values at their use sites instead of package-level static constants.
fix: Restore Palantir thread settings on exit, validate Python runtime changes before applying thread configuration, invalidate CytoTRACE2 model caches when assets change, and reject conflicting
cores/ncoresarguments.refactor: Trajectory Python backends call
PrepareEnv()directly and use its managed environment validation/cache instead of bypassing preparation when modules happen to be importable.
scop 0.9.2
fix: Cell2location stores plotting matrices for all original spots, with NA for filtered observations, and retains the modeled IDs. Historical compact matrices are expanded only when their modeled/dropped-ID records explain the missing rows; stale or unknown IDs still fail.
fix: Long-format spatial point/jitter maps forward explicit cutoffs and quantiles without changing the default full range. Both long maps and generic dominant deconvolution maps honor
combine = FALSE.fix: Matrix spatial plots retain explicit cutoff/quantile scales, and Cell2location dominant maps forward
combineand layout controls. Constant topic/abundance panels use consistent default legend breaks.refactor: Long-format spatial points and jitter reuse the standard point renderer. Spatial workflow parameter validation, stage-field updates and method-name dispatch are consolidated without removing preflight or result checks.
docs: Execute the SpatialExperiment round-trip with the correct counts layer, use merged-image auto-resolution in the PRECAST template, and render the main workflow’s empty-panel and save/reload examples.
breaking:
RunSpatialGradientFeatures()now exposes only the native C++ gradient interface. The unused compatibility parameterssample_name,platform,img_scale_fct,assay_modality,trajectory_id,width,annotation_id,core,distance,angle_span,resolution,model_add,model_subset,model_remove, andcontrol, plus unsupportedannotation_idsand..., are removed and now fail as unused arguments. Useimage/coord.cols/coordinate_space, the annotation metadata inputs, and the native screening controls documented by the function.fix: Spatial proportion, topic-proportion, and q05-abundance point maps share one renderer. Scale/title formatting now happens before the
combinedecision, so empty panels, constant values, named colors, and combined/non-combined returns have the same interpretation. Ordinary benchmark summary tables use the stable bar view forplot_type = "auto";funkyheatmapremains explicit.feat:
RunSpatialIntegration()gainsstore_object = TRUE. Setting it toFALSEomits the complete native PRECAST object while retaining the standardized result, source, parameters, summaries, and plotting payload.docs: Refresh the three Spatial Analysis articles around the real Visium baseline, platform-specific imports and units, and separate Seurat–SpatialExperiment/Giotto bridge contracts. External paths are templates and optional backend examples are labeled as such.
chore: Package attachment no longer prints the ASCII startup banner or repeated environment instructions. Explicit Python-environment initialization still reports its actual success or failure.
fix: Spatial plots preserve coordinate aspect ratios, factor order and named category colors. Point, long-format and pie facets accept metadata names with spaces, constant features honor explicit color limits, and ambiguous value IDs are rejected.
fix: Spatial integration maps render every sample with its matching image; aligned views use aligned coordinates without raw-image overlays.
SpatialCellPlot()adds named-list/layout and legend controls, with a sequential default palette for numeric features.fix: Deconvolution summaries report assigned/unassigned spot counts without assigning zero-weight spots to the first cell type. Invalid weights fail before object mutation. Empty deconvolution panels remain plottable and constant proportion panels share comparable legends.
dependencies: Require thisutils >= 0.5.2 for the
detect_cores()calls already used by SCOP.fix: Restore
coresforwarding to thencoresargument in SpatialEcoTyper deconvolution and both MERINGUE R permutation tests; the deprecatedncoresalias remains supported.cleanup: Remove the unreachable per-gene C++ branch after MERINGUE’s batch kernel returns; the batch implementation and numerical behavior are unchanged.
fix: Forward
theme_useandtheme_argsin all SpaTalk and COMMOT CCC plot views. Consolidate SpaTalk result preparation and remove duplicate coordinate checks and redundant plot-call wrappers.breaking:
RunMonocle2()drops thebackend = "cpp"path and itsn_neighborsparameter. Monocle now accelerates the DDRTree ordering hot paths natively in C++, so the separate scop implementation is no longer needed;backendandn_neighborsare accepted with a deprecation warning and ignored. Thegroup.by-basedroot_stateresolution that only the C++ backend supported is removed with it, androot_statemust be a trajectory State as with the previous"r"backend.perf:
RunMonocle2()DDRTree ordering now runs on monocle’s native C++ fast paths (cell-to-MST projection, projected-cell minimum spanning tree, tree ordering traversal, and state-based root selection, ported from the former scop backend into mengxu98/monocle). Ordering a 3,000-cell dataset drops from ~9.3 s to ~1.2 s, and the ordering step no longer scales quadratically with cell number. Pseudotime, states, and the root cell are unchanged. The updated monocle is declared throughcheck_r()and installed byPrepareEnv().breaking: Public APIs take the data object as
object=rather thansrt=. Every exported function that tooksrt=now takesobject=;srt=remains accepted as a deprecated alias that warns on use and is removed in scop 1.0.0.RunVECTOR(),VECTORPlot(),RuntAge(),tAgePlot(),RunscTenifoldNet(), andPrepareSCExplorer()takeobject=only.breaking: Remove unverified
RunSpatialDWLS()and its plotting path rather than presenting clipped least-squares output as SpatialDWLS. UseRunRCTD(),RunCARD(), orRunSPOTlight()withSpatialDeconvolutionPlot().breaking: Remove
SpatialEcoTyperCompositionPlot()andSpatialEcoTyperSpatialPlot(). UseCellStatPlot()andSpatialSpotPlot().breaking:
SpatialGradientPlot()now reads only storedsummary,line, andmodelviews.surface/combinedplot types and current-assay/layer refetch are removed.fix:
RunDoubletCalling()forwards the data object asobject=only, soRunCellQC()no longer fails with “Provide only one ofobjectorsrt” for anydb_method. The Python bridges (RunSCVELO(),RunCellRank(),RunPalantir(),RunPAGA(),RunWOT(),RunCellTypist()) no longer pass the data-object argument on to Python functions that accept neitherobject=nor extra keywords.fix: Giotto bridges reuse an already-installed GiottoClass instead of reinstalling
drieslab/Giottowhen the GitHub remote does not match (for example the optional CI pingiotto-suite/Giotto). The live round-trip test uses a tiny in-process fixture instead of reloading the source tree under a 120scallrtimeout.fix:
srt_to_adata()converts velocity matrices stored as extra layers ofassay_x, such asspliced/unsplicedin theRNAassay of a Seurat v5 object, instead of dropping them without a message.RunSCVELO()failed on such objects withError in scVelo analysis: 'Ms', because scVelo skips the moment computation when the layers are absent and reports the problem later asadata.layers['Ms']. Names inassay_ythat are neither an assay nor a layer ofassay_xare now reported with the available ones, and the Python workflow names the missing layers instead of raising aKeyError.fix:
MistyRPlot(measure =)selects the numeric result column explicitly (gain.R2/gain.RMSEorcontribution/importance).fix: Spatial integration (PRECAST) domain, embedding, and coordinate results must match Seurat cell identities exactly, including named, reordered, missing, extra, and duplicate IDs.
fix:
SpatialCellPlot()fetches feature values throughGetAssayData5()with explicitassay/layer.fix:
StatialKontextualPlot()draws connecting lines only when a relationship has multiple radii.fix: Coordinate v3 accepts the empty native orientation slot introduced by newer SeuratObject versions. List integration resolves explicit image maps before merging duplicate image names. Existing coordinate-contract v2 results still require rerunning.
fix: Spatial coordinate contract v3 uses persistent image axis provenance instead of guessing from mutable metadata, parses numeric factor coordinates correctly, and records the resolved coordinate columns.
SetSpatialImageAxes()preserves custom VisiumV2 conventions through subsetting and renaming; the bundled Visium object is migrated without changing its measurements. Coordinate-dependent results from contract v2 must be rerun.fix: Spatial point and pie plots default to the same FOV/metadata y orientation as network and boundary plots (
flip.y = FALSE). SpatialExperiment exports default to raw coordinates and retain transforms for reversible display-coordinate round trips.fix: Spatial integration and SpatialEcoTyper multi discovery resolve each sample’s image independently and reject incomplete image coverage. SpatialEcoTyper single discovery requires a single selected image and stores its raw coordinate source. SpotSweeper local outlier results with verified sample-prefixed IDs are restored to input order without accepting changed coordinates or expression.
fix: Gradient result storage and VariableFeatures updates are independent; explicit empty updates clear VariableFeatures and completion messages describe actual actions.
fix: Neighborhood spatial counts respect saved analysis scope and condition, distinguish zero from unevaluated cells, reject unsupported plot arguments, and support valid empty observed results.
fix:
RunMonocle2()skipsestimateDispersions()unlessfeature_type = "Disp"orshow_plot = TRUE. The sparse-matrix2^31-1crash in dispersion fitting is fixed in mengxu98/monocle 2.9.3.fix:
RunScTenifoldKnk()builds the gene regulatory network ensemble with scop’s native C++ kernel in every backend instead of callingscTenifoldNet::makeNetworks();backendonly selects how the downstream differential-regulation steps run (r= upstream helpers,cpp= scop kernels) and what is stored, with thecpppath much faster on large gene sets.fix:
RunScTenifoldKnk(backend = "cpp")no longer loses network scores when a subsample drops an all-zero gene: the empty sparse template was a pattern (ngCMatrix) matrix that coerced the ensemble coefficients to logical, so affected networks reached the tensor decomposition as 0/1 and the knocked-out gene was reported as not dysregulated (#427).fix: Optional GitHub-only backends (
presto,SpatialCellChat,NNLM,SpaTalk) are resolved at their call sites throughcheck_r()and dropped from the check-time Suggests, so R CMD check no longer installs them;prestostays a runtime-optional backend with marker fast paths using an existing installation andRunCellChat(do.fast = TRUE)resolving it before execution.fix: C-SIDE completion messages respect result storage and document compatibility metadata as run-level significant record counts.
-
feat:
-
SpatialNeighborhoodProfile()returns observed per-cell neighbor counts and fractions at multiple raw-coordinate distances, retaining the full selected tissue context for target cells without modifying the Seurat object or storing an edge table. -
RunDEtest()sample-level methods gainmin.cells.sample(default10) to drop pseudobulk samples whose cell count in the currentgroup.bylevel is below a threshold, which can reverse DE direction relative to cell-level tests. Setmin.cells.sample = 1to keep the previous unfiltered behavior. -
RunNichenetr()andRunMultiNichenetr()gainmerged_table_fileto export a temporary merged ligand-receptor/activity/target table as CSV; an existing file is never overwritten.
-
spatial workflows: Add BANKSY and SmoothClust to
RunStandardWorkflow(workflow = "spatial"), with explicitspatial_cluster_params. Optional SpotSweeper QC and SpaNorm normalization retain stage status and keep original counts separate from normalized downstream expression.spatial inputs:
ReadSpatialData()delegates Visium, Visium HD and Xenium loading to Seurat and records analysis units, assay/image resolution and coordinate units. Import and workflow entry points automatically validate the selected context.large spatial data:
ScaleData()now supports Assay5 cell subsets and updates layer membership on rescaling. SPARK-X retains sparse input, and dense spatial-feature conversions have an explicit size guard.normalization: Explicit
do_normalization = FALSEis respected by preprocessing, including externally normalized data that the heuristic cannot classify. The SpaNorm workflow retains matched original counts for library QC alongside normalized expression.dependencies: Declare the existing direct lifecycle dependency used by PseudobulkExpression; no optional Remotes backend is promoted to Imports.
data: Remove the derivative
pbmc_celltypist_sub,visium_human_pancreas_results_sub,visium_human_pancreas_pair_sub, andxenium_human_pancreas_boundaries_subdatasets and one-off data migration scripts. Examples reusepbmcmultiome_subandvisium_human_pancreas_sub, computing results when needed; specialized workflows document their required inputs without placeholder files. Existing scripts using the removeddata()names must be updated.chore: Optional-package probes in package code now use
check_r()andget_namespace_fun()instead ofrequireNamespace(). Documented examples call public functions under\dontrunand do not invokecheck_r.chore: Cleared the remaining R CMD check findings across plot wrappers and integration benchmarks.
docs: Synced the
RunMonocle3()use_partitiondefault and theRunDoubletCalling()backend default with their sources, and bolded the README headings to match the other packages.test: Dropped the stale AUCell namespace expectation from the consistency tests.
-
removed:
- Removed the legacy spatial registry and result-discovery APIs (
GetSpatialResult(),ListSpatialMethods(),SpatialBackendStatus(), andSpatialResultInfo()). Use each producer’s documentedsrt@toolsentry and, where provided, its dedicated result accessor or plotting function.
- Removed the legacy spatial registry and result-discovery APIs (
scop 0.9.1
-
feat:
- Internal preprocessing and integration workflows now use scop’s Seurat-compatible entry points, enabling validated native acceleration for normalization, variable-feature selection, scaling, PCA, and neighbor search while retaining transparent Seurat fallback for unsupported paths.
- The native
SCTransform(vst.flavor = "v2")path now supports validated numeric and factorvars.to.regressdesigns andlatent.data; unsupported regression designs continue to delegate to Seurat. - The native PCA auto path accepts smaller stable trailing eigengaps after numerical and neighborhood-parity validation, allowing more datasets to use the accelerated implementation.
- Added
CellScoringPlot()for paired group/score UMAPs, score distributions, threshold proportions, and complete multi-program layouts fromCellScoring()results. - CellRank + Palantir fate workflow now supports MAGIC layers, explicit Schur sizes and terminal-state validation, normalized fate/driver/transition payloads, CellRank GAM trend modules, module enrichment, and result-only
CellRankPlot()views. - Added
RunCOMMOT()andCOMMOTPlot()for official COMMOT spatial communication through an isolated Python subprocess with raw-coordinate provenance and optional external H5AD storage. - Added
RunSpaTalk()andSpaTalkPlot()for official SpaTalk single-cell and spot-reference spatial communication workflows with compact unified CCC storage. - Added
CCCNetworkPlot(plot_type = "spatial"), a stored-result slice overlay for SpatialCellChat, SpaTalk, and COMMOT with abundance-scaled group nodes, sender-coloured directed edges, and proportion-aware composition pies. -
RunCNV()backend coverage:copykat,fastCNV,SCEVAN,infercnv, andnumbatare now verified against their original pipelines on real bundled datasets (breast-cancer scRNA-seq, infercnv example, numbat ATC2 example), with exact prediction agreement for copykat/SCEVAN/numbat and Spearman rho = 1.0 for fastCNV/infercnv. - The MERINGUE C++ permutation kernel now traverses the weight matrix sparsely (row-major edge list, bit-identical accumulation):
nperm = 200Moran p-values at 300 spots drop from ~442s to ~14s (~30x). - Removed wrappers whose upstream dependencies are unavailable or uncompilable:
RunSpatialQM(), theRunSemla*()wrappers, theBASS/SpatialMNNbranches ofRunSpatialIntegration()(PRECAST unaffected), and the SPATA2backend = "r"path ofRunSpatialGradientFeatures()(C++ backend only;srt_to_spata2()/spata2_to_srt()removed as well). -
RunMERINGUE()gains abackend = c("cpp", "r")option; the C++ kernels replicateMERINGUE::moranTest()/moranPermutationTest()to machine precision (including thesample.kindRNG stream).backend = "r"retains the original calls and honorsmoran_params. - Real-data consistency tests verify the wrappers against the original pipelines (CellChat, SpatialCellChat, LIANA, BayesSpace, MERINGUE, SPOTlight, SpaNorm, SpatialDWLS, RCTD, BANKSY, CARD, SpotSweeper, PRECAST).
-
DorotheaPlot()now follows the shared scop plot style: horizontal"bar"/"lollipop"comparison plots,"volcano","heatmap"viaGroupHeatmap(),"dim"(activity vs expression on embeddings),"stat"(FeatureStatPlotdistributions), and"targets"(regulon-target volcano).RunDorothea()examples showFeatureDimPlot()/FeatureStatPlot()on the TF-activity assay. -
RunIntegrationBenchmark()compares integration methods with scIB-style iLISI/cLISI, ASW, graph connectivity, and ARI/NMI scores and returns aSeuratobject. Tables live insrt@tools$IntegrationBenchmarkand are printed withthisplot::print_colored_table().IntegrationBenchmarkPlot()drawsbox(per-cell LISI), heatmap, scatter, and UMAP views.LISIPlot()is removed; useIntegrationBenchmarkPlot(plot_type = "box"). -
SCENICPlot()/SCENICPlusPlot():heatmap_dotplot,eregulon_dim,coverage,network,network_graph,egrn,overlap."network"draws one hub per TF. Network plots have no title. Networks use"Chinese"whenpalette = "RdYlBu". Multi-TF legends show the top RSS cell type.
-
fixed:
- R-CMD-check now installs
prestodirectly fromimmunogenomics/presto, avoiding dependency-resolution failures caused by treating the GitHub-only package as a CRAN package. -
RunCellRank()now disables PETSc explicitly when retrying fate probabilities with SciPy’s direct solver, preventing CellRank 2.0.7 from silently reverting the retry to GMRES and rejecting harmless floating-point negative probabilities (#380). -
RunCellRank()defaults to the dependency-freebrandtsSchur method again, so the standardscop_envno longer fails because the optionalpetsc4pyandslepc4pypackages are absent. Users can still requestschur_method = "krylov"when those packages are installed (#380). - CellRank stored-result plotting now follows SCOP’s
theme_scop,Chinese, andSpectralvisual contracts; draws transition projections directly from the saved sparse transition matrix; supports random walks without requiring trend results; facets trend modules; and adds module-enrichment dot plots. CellRank enrichment selects the database gene-ID column that overlaps the actual driver background, including three-column GO tables with both Entrez and symbol identifiers. - Linux shared-library preloading keeps a package-local
load_shared_library()seam, so dependency-order retries can be tested without attempting to mock the basedyn.load()function as a SCOP namespace binding. - Coordinate-contract validation now covers unified CCC plots for SpatialCellChat, COMMOT, and SpaTalk without rejecting coordinate-independent SpatialDWLS proportions. Explicit
coordinate_space = "legacy_display"analysis preserves its historical lowres-to-hires fallback; current display plotting remains strict about the selected scale. - Spatial coordinate contract v2 now reads full-resolution VisiumV1/VisiumV2 coordinates, restores the
imagerow/imagecolorder that Seurat’s standard VisiumV2 loader stores positionally as centroidx/y, preserves explicit generic FOVx/y, normalizes only explicitly named legacy image row/column coordinates, and applies exactly one selectedlowresorhiresdisplay transform.SpatialCoordinates(), HE-overlay point/pie/network plots, and their public wrappers gain an appendedimage.scaleargument; variadic wrappers keep it named-only after.... Raw SpatialCellChat analysis no longer requires an available display scale, and coordinate-independent producers no longer claim a coordinate-contract version. Users no longer need to modify Seurat@scale.factorsslots. Coordinate-dependent stored results created under an older or unknown contract must be rerun. -
RunSlingshot()/CellDimPlot(lineages=)no longer fail withscale$guide == "none"on ggplot2 >= 3.5 whenggnewscaleis older than 0.5.0. Colour/fill scales now keep a characterguide, legend overrides go throughguides(),ggnewscaleis pinned to >= 0.5.2, and a failed lineage plot no longer discards the Slingshot result. -
RunGSEA()/RunEnrichment()no longer fail with “replacement has 0 rows, data has N” when the cached database carries an empty version. The KEGG REST API dropped theReleaseline from/info/<org>, soPrepareDB()now resolves the KEGG version from the release-notes page when the info endpoint does not report it (retrieval-date fallback; HPO hardened the same way), and the enrichment writers tolerate missing versions. -
RunSpaTalk()now reuses storedRunRCTD()weights through SpaTalk method 2, records the deconvolution source, and accepts a working installed SpaTalk package even when its DESCRIPTION lacks GitHub remote metadata. -
RunLIANA()now preserves the field set returned by LIANA’s official consensus mode: rank consensus no longer gains all-NAaggregate/significance placeholders, aggregate consensus no longer gains all-NAmagnitude/specificity placeholders, and deterministic ligand-receptor display identifiers are completed during SCOP/LIANA export. -
RunCNV()attaches backend packages to the search path during execution so lazy data objects (copykatfull.anno, fastCNVgeneMetadata, numbatgtf_hg38) are resolvable from backend namespace code;copykatis installed from its GitHub source (navinlabcode/copykat) because it was removed from CRAN. -
RunCNV(numbat)prefers the plainsegcolumn overseg_labelwhen readingjoint_postoutput, so segment identifiers are not polluted with the(loh)suffix. -
RunCNV()numbat extraction is vectorized (direct index assignment with duplicate averaging instead of row-by-rowaggregate/strsplit, plussplit()-partitioned bin statistics): a 300-seg x 2000-celljoint_postextraction drops from ~16s to ~1.3s (~12x) with bit-identical results. -
visium_mouse_brain_slices_subrebuilt with the currentSeuratObjectso bundledVisiumV2images can be subset again. -
RunRCTD()extracts per-spotall_weightsfromspacexr>= 2.2doublet_mode = "multi"results. -
RunSpotSweeper()detects upstreamSpotSweeper::localVariancebreakage onSpatialExperimentcolData and degrades gracefully. -
RunSpatialIntegration(PRECAST)writes the raw coordinates expected byCreatePRECASTObject. -
RunLIANA()recognizeslogfc_comb(and other liana method score columns) as the interaction score. - Exported
theme_scop/theme_spatialare listed in the pkgdown reference index; thetheme_scopalias test compares function equality rather than identity so installed-package checks pass. -
DorotheaPlot(plot_type = "volcano")plots every tested TF, caps Wilcoxon underflow on the y-axis, colors points by direction, and labels significant TFs."targets"labels only significant genes so leader lines no longer pile at x = 0.
- R-CMD-check now installs
- removed:
-
changed:
-
RunBenchmark()/BenchmarkPlot()are replaced byRunSpatialBenchmark()/SpatialBenchmarkPlot(). The old names are removed. -
RunCell2fate()examples callRunStandardWorkflow()and plot time, uncertainty, module activation, and module state.env_requirements()also shows the standalone Cell2fate Python 3.9 stack. -
ListLIANAResources()is replaced byListCCCDB(), which enumerates ligand-receptor databases and prior models across all CCC backends with a unifieddb/species/statusschema. - New
PrepareCCCDB()prepares the CellTalk and CellChat databases (TERM2GENE/TERM2NAME,R.cache-backed); the CellTalk/CellChat branches were removed fromPrepareDB(). - Database listing outputs are unified (
ListDB()andListCCCDB()return plain data frames; colored console rendering is available viathisplot::print_colored_table()). - Python-converted object interop:
PAGAPlot(),VelocityPlot()/CellDimPlot(velocity=),RunPAGA(use_rna_velocity),RunCellRank(), DE consumers (VolcanoPlot(),DEtestPlot(),RunEnrichment(),RunGSEA(), …), andRunScissor()now fall back to scanpy/scVelo result slots (paga,rank_genes_groups,velocity_umap,dpt_pseudotime,connectivities) stored byadata_to_srt().
-
scop 0.9.0
-
feat:
- New optional-backend wrappers:
RunCHOIR()for significance-based hierarchical clustering andRunCell2fate()for RNA-velocity modeling, both with pinned backend provenance, strict result validation, metadata writeback, and resumable artifacts. - Added
RunCell2location()for official Python cell2location reference-signature learning and spatial abundance mapping, with manifest-validated resume, signature reuse, andCell2locationPlot()visualizations. - Added
RunCNV()as a unified CNV workflow with optionalcopykat,infercnv,SCEVAN, andfastCNVbackends, standardizedsrt@tools[["CNV"]]storage, andCNVPlot()visualizations; addedRunESTIMATE()for stromal/immune/tumor-purity scoring withEstimateScorePlot()/EstimateGenePlot(). - GRN analysis extended:
RunSCENICPlus()for SCENIC+ multi-omics workflows, plus standaloneRunGRNBoost2(),RunGENIE3(), andRunCisTarget()modules sharing the SCENIC regulon infrastructure. - Added
RunSpatialCellChat()as a SpatialCellChat v3 producer for cell-, spot-, and composition-level communication, with raw-to-micron coordinate contracts and schema-v1 provenance;GetCCCObject()andSpatialCellChatPlot()provide stored-result access. - Spatial analysis framework: added spatial contract schema v1 (
SpatialCoordinates(),GetSpatialResult(),GetSpatialGraph()), a shared spatial method registry (ListSpatialMethods(),SpatialBackendStatus(),SpatialResultInfo()), strict raw-coordinate defaults, and sparseBiocNeighbors-backed graph kernels for SmoothClust, spatial-variable-feature, and spatial-neighborhood paths. - Added
RunSpatialBenchmark()andSpatialBenchmarkPlot()for failure-tolerant comparison of stable spatial-domain clustering methods (ARI/NMI/purity, runtime, peak memory); addedClusterTreePlot()for multi-resolution clustering trees. - Visualization improvements:
FeatureStatPlot()/ExpressionStatPlot()gainauto_comparison;GSVAPlot()gains amode = "diff"two-group pathway test;FeatureHeatmap(),DynamicHeatmap(), andGroupHeatmap()compact long multi-term annotations;CellCorHeatmap()gainslegend.position. - Performance: C++ acceleration for the core Seurat flow —
NormalizeData(),FindVariableFeatures(),ScaleData(), PCA and neighbor search — and for marker detection (FindMarkers(),FindAllMarkers(),FindConservedMarkers()); native kernels for manifold learning (UMAP, PaCMAP, TriMap, PHATE, DM), trajectory inference (PAGA, SCVELO, VECTOR), Z-score/PLAGE/ssGSEA/AUCell gene-set scoring, spatial-variable-feature statistics, cross-KNN and connectivity graphs, and integration embeddings. -
RunMetabolism()now builds gene sets viaPrepareDB()by default with species-aware conversion;PrepareDB()accepts local single-file database sources (MSigDB, CORUM, JASPAR, TRRUST, CellChat, and more);RunSCENIC()gained agenomeparameter for hg38/hg19 reference selection. -
RunSpatialNeighborhood()defaults to observed-neighborhood summaries; the standard spatial workflow records per-stage requested/completed/skipped/failed state and reports partial completion.
- New optional-backend wrappers:
-
changed:
- Renamed
standard_scop()toRunStandardWorkflow()andintegration_scop()toRunIntegration()(multi-method support viaintegration_methods); renameddb_scDblFinder(),db_scds(),db_Scrublet(), anddb_DoubletDetection()toRunscDblFinder(),Runscds(),RunScrublet(), andRunDoubletDetection(). Old entry points emit deprecation warnings and will be removed in version 1.0.0. - Spatial analysis, plotting, and framework conversion now require explicit
imageselection for multi-image objects; distance-sensitive producers default to raw acquisition coordinates (coordinate_space = "legacy_display"remains available).
- Renamed
-
data:
- Added
visium_human_pancreas_sub, a Visium human pancreas spatial example dataset (GSE254829) with spatial image data and CODA-derived annotations, for spatial analysis. - Added a Xenium package-data import script for preparing curated Xenium example resources outside the installed package payload.
- Added
scop 0.8.9
- Cell-cell communication:
-
RunLIANA()now stores LIANA’s official multi-method consensus fromrank_aggregate()orliana_aggregate()alongside the historical method-stacked and scop-postprocessed tables. Human and mouse defaults use theConsensusandMouseConsensusligand-receptor resources, respectively, and multiple resources are aggregated independently. - Added
ListLIANAResources(),ListCCCMethods(),CCCResultInfo(), andGetCCCResult()for resource discovery and Seurat-centered CCC result access. -
RunCCC()now registers all seven SCOP CCC producers while retaining CellChat, CellPhoneDB, and LIANA as the default core run. Unified CCC plotting separates backends by default and provides explicit support-count and within-method percentile-rank views. - Hardened unified CCC plotting and access semantics: context filters are applied before cross-method support/rank combinations, CellChat cached rows honor the requested significance threshold, LIANA resources remain separate during export, and unified retrieval preserves backend labels.
RunCCC(skip_failed = TRUE)now records preflight failures without aborting otherwise runnable methods.
-
-
fix:
-
RunGSVA(): Removed redundant denseas.matrix()conversion in single-cell mode forbackend = "r"; sparse expression matrices now stay sparse through row filtering, reducing peak memory and avoiding unnecessary dense materialization. -
RunCellQC(): ReplacedSeurat::SplitObject()with lazy cell-name-based subsetting, avoiding full-object duplication per split group. Added caching ofGetAssay()gene names,GetAssayData5()counts, and per-cell QC metrics (nCount/nFeature) outside the species-check loop to eliminate repeated data extraction. -
RunDEtest(): Pre-computed cell index mapping (split(names(cell_group), cell_group)) for paired-marker tests, replacing per-pairwhich()calls with O(1) list lookups. -
AnnotateFeatures(): Replaced per-detailsapply(… "[")with type-stablevapply(…, character(1))to avoid implicit list-to-character coercion. -
run_scomm(): Deferred dense conversion for reference and query subsetting by removing prematureas.matrix()calls; sparse matrices are subset first, then densified only when required. -
RunUMAP2(): ReplacedisSymmetric(as.matrix(graph))with sparse-awareMatrix::isSymmetric(graph)in symmetry checks and graph subset sampling, avoiding dense materialization of large neighbor graphs. -
RunUMAP2(): Replacedapply(as.matrix(graph), 2, order)in the uwot-predict path withthisutils::run_sparse_topk_stored(by = "col"), avoiding full dense conversion and column-wise R-levelapply()while retaining graph-edge semantics. -
RunDimsReduction()(PCA centering): UsesSeuratObject::LayerData(…, features = features)to read only HVF rows fromscale.datainstead of loading the full matrix followed by manual subsetting. -
RunMDS(): Removedas.matrix()beforeMatrix::t();proxyC::distnow receives the sparse matrix directly, avoiding dense conversion of large count matrices. -
integration.R(fastMNN): Removed threeas.matrix()calls passed tobatchelor::fastMNN(), which accepts sparse matrices directly viaSingleCellExperiment. -
RunStandardWorkflow(): Replaced fullscale.datamatrix load (viaGetAssayData5()) with direct layer access (SeuratObject::GetAssayDatafor Assay5;@scale.datafor Assay) to retrieve only rownames when checking whether HVFs have been scaled, substantially reducing peak memory during the ScaleData decision step. -
GetAssayData5.Assay(): Fixed parameter naming to use positional matching for the slot/layer argument, soGetAssayData5()correctly retrievescounts,data, andscale.datalayers in both Seurat v4 (slot) and v5 (layer). Previously the namedlayerargument was silently dropped by SeuratObject v4, always returning thedataslot regardless of the requested layer. -
CSS_integrate(): AddedAssay5guard beforeSeuratObject::JoinLayers()to avoid errors with Seurat v4Assayobjects, which do not support layered storage. -
RunDimsReduction(): Added Seurat v4 fallback for PCA centering —SeuratObject::LayerData(…, features = …)is Assay5-only; v4Assayobjects now useGetAssayData5()with manual feature subsetting. -
RunIntegration(): Added early detection for v5-only integration methods (CCA,RPCA,fastMNN5,Harmony5,scVI5) to provide a clear, actionable error message when used with Seurat v4Assayobjects, rather than failing deep in the call stack.
-
-
feat:
- Added
loom_to_srt()for pure-R loom-to-Seurat conversion viarhdf5, preserving velocitysplicedandunsplicedlayers as assays without initializing Python, and added Python-backedloom_to_adata()for users who need AnnData output. - Added
RunBulk()as a unified bulk-strategy entrypoint with method-vector selection for bulk DE, deconvolution, and cell-type-specific DE workflows. - Added method-specific bulk runners for
de_limma_voom,de_edgeR_qlf,de_DESeq2,de_dream,deconv_MuSiC,deconv_BisqueRNA,deconv_BayesPrism, andcsde_TOAST. - Standardized bulk results under
Bulk$results$de,Bulk$results$deconv, andBulk$results$csde, keeping DE outputs compatible with existingDEtestPlot(),RunEnrichment(),RunGSEA(),GroupHeatmap(), andFeatureHeatmap()data flows. -
RunBulk(run_enrichment = TRUE, run_gsea = TRUE)now filters bulk DE rows with pathway thresholds and mirrors successful pathway results toEnrichment_Bulk_wilcoxandGSEA_Bulk_wilcox, soEnrichmentPlot()andGSEAPlot()can read them through the standardsrt@toolscontract. - Deconvolution and CSDE bundles now record their computational
engineindetails; the current deconvolution runners use explicitbackend = "internal"SCOP profile fitting andcsde_TOASTuses explicitbackend = "limma_interaction", so package backends can be wired in later without pretending to call external packages. - Added explicit
Remotesentries formengxu98/thisplotandmengxu98/thisutilsso source installs can resolve the minimum imported versions required by SCOP. Optional bulk engines such asDESeq2andvariancePartitionare installed on demand throughcheck_r()and called lazily throughget_namespace_fun(). - Added
method_argsto expose method-specific tuning parameters without expanding the public API surface.
- Added
scop 0.8.8
-
deps:
- Updated the minimum dependency versions to
thisplot (>= 0.3.8)andthisutils (>= 0.4.5), and removed local copies of helpers now provided upstream (thisplot::annotate_quadrants(),thisplot::clip_symmetric_range(),thisutils::collapse_sparse_rows()).
- Updated the minimum dependency versions to
-
docs:
- Updated pkgdown reference grouping for the cell-cycle workflow.
-
fix:
- Added optional wrappers for
RunDorothea(),RunBayesSpace(), and experimentalRunscTenifoldKnk().RunscTenifoldKnk()keeps the upstreamscTenifoldNetworkflow but fixes the QC gene-filter assignment in the local path, uses an equivalent covariance/downdate path with direct sparse matrix construction, selection-based quantile thresholding, and controlled per-gene eigensolver parallelism for largepcNet()network construction, and uses C++ helpers for tensor decomposition, manifold matrix construction, directionality, and differential-regulation distance calculations. The C++ tensor-decomposition path now computes MTTKRP updates directly instead of materializing four dense unfolding matrices. -
PrepareEnv(): Added explicit support formambaandmicromambaexecutables in addition toconda, including command-name resolution, automatic package-managed micromamba download whenconda = "micromamba"is requested and the command is not onPATH, manager-aware logging, micromamba env path detection, and ToS handling that only runs for standard conda. Package-managed micromamba environments now use a no-space cache root to avoidmicromamba run -ppath parsing failures.PrepareEnv()now also stops early if reticulate has already initialized a different Python executable, avoiding unsafe in-session switches between conda and micromamba. The Python stack now also pinssetuptools < 81so legacy packages such astrimapcan still importpkg_resources. -
PrepareEnv(): The defaultmodules = NULLenvironment no longer includesscomm; install it explicitly withmodules = "scomm"because the TensorFlow/scOMM stack conflicts with the default JAX/scVI stack through incompatibleml-dtypesrequirements. -
CheckDataList()/RunStandardWorkflow(): Removed an unnecessary all-featureScaleData()call immediately afterLogNormalize. Downstream workflows still scale the selected HVFs before PCA, but large raw-count inputs no longer create a dense all-genescale.dataintermediate during checking. -
srt_reorder(): Replaced per-cluster repeated sparse subsetting androwMeans()with a single sparse group-membership matrix multiplication, speeding the cluster-reordering step used byRunStandardWorkflow()while preserving average expression values. -
FindExpressedMarkers(): Added a sparse fold-change and detection-rate prefilter path for common sparse RNA inputs, avoiding dense all-feature expression materialization before marker filtering while preserving default results. Supplied features are now intersected with the active layer before dense fallback scoring, which also keepsscale.dataand partial-feature layers from passing absent rows into fold-change calculation. - C++-accelerated backends are now the default where available:
RunMetabolism(),RunGSVA(),CellScoring(),RunDynamicEnrichment(), andRunEnrichment()now preferbackend = "cpp"while retainingbackend = "r"for exact legacy/package behavior.RunPermutation()now uses its validated C++ implementation directly. -
RunMetabolism()andRunGSVA(): Added a reusable C++ gene-set scoring backend forssGSEA,zscore, andplage;RunGSVA()can now usebackend = "cpp"formethod = "ssgsea",method = "zscore",method = "plage", and Gaussian- or Poisson-kernelmethod = "gsva". PLAGE scores are oriented by the gene set mean z-score to avoid backend-dependent sign flips. -
RunMetabolism()andRunGSVA(): Addedcpp_chunk_sizefor the C++ GSVA kernel paths to reduce peak dense intermediate memory on large cell counts;NULLnow auto-selects a chunk size for large matrices. -
RunEnrichment(): Added an experimentalbackend = "cpp"ORA path using a C++ hypergeometric implementation for faster enrichment tables while keepingbackend = "r"available as the clusterProfiler-compatible path. -
CellScoring(): Added experimentalbackend = "cpp"support for Seurat module scoring by keeping control-gene sampling in R and moving sparse mean calculations to C++ code. -
RunPermutation(): Uses the C++ permutation and bootstrap loops directly after validating they match the legacy R calculation for observed fractions and log2 fold-differences while running substantially faster. -
RunUMAP2(): Added an internal C++ sparse column top-k helper for Graph inputs to speed extraction of precomputed neighbor indices/connectivities before callinguwot. -
RunKNNMap()andRunKNNPredict(): Added an internal C++ dense column top-k helper for the raw KNN fallback to speed nearest-neighbor extraction from precomputed distance matrices. -
PseudotimeProjectionPlot(): Reused the internal dense top-k helper for pseudotime KNN/gradient neighbor extraction from distance matrices. - Mapping/integration metrics: Added an internal C++ contingency-table helper for
metric_accuracy(),metric_macro_f1(),metric_purity(),metric_nmi(),metric_ari(),metric_weighted_recall(), andcollect_mapping_metrics(). -
RunMetabolism(): Added a C++ backend formethod = "GSVA"that keeps the Poisson-kernel GSVA scoring path but accelerates repeated count-kernel calculations. -
RunMetabolism()andCellScoring(): Added an experimental C++ backend for AUCell scoring selected only throughbackend = "cpp", while keeping the original R/AUCell implementation available viabackend = "r"for exact package output.RunDynamicEnrichment()now passes this backend through to AUCell-based scoring. -
CellScoring(method = "AUCell"): Fixed score-name assignment when only one feature list is scored, avoiding vector dropping before metadata column names are applied. -
RunMetabolism(method = "VISION"): Fixed signature construction so in-memory gene sets are passed asVISION::Signatureobjects instead of being interpreted as file paths. -
DynamicHeatmap()/ custom enrichment workflows: Fixed incorrect term label display when user-providedTERM2GENE/TERM2NAMEuse non-standard column names such asterm/name. Custom term annotations are now normalized consistently so that heatmap term labels show readable term names instead of fallback IDs (e.g. GO IDs). Related issue #160 (@Pineapple-wen6, @mengxu98). - Refactored repeated custom database input handling by introducing shared internal helpers for normalizing and assembling user-provided
TERM2GENE/TERM2NAME, and applied them acrossRunEnrichment(),RunDynamicEnrichment(),RunGSEA(),RunGSVA(), andPrepareDB()to keep behavior consistent. -
RunIntegration(): ImprovedChromatinAssayhandling by standardizing ATAC reductions after integration, avoiding non-interactive small-batch blocking, clippingTFIDF/rlsianchor dims to available cells, auto-switchingHarmony5to legacyHarmony, and rejecting unsupportedSeurat/RPCAATAC paths with explicit messages.
- Added optional wrappers for
scop 0.8.7
-
feat:
- Added
RunDimsEstimate()andDimsEstimatePlot()for intrinsic dimensionality estimation from reductions, integrated intoRunDimsReduction()andRunStandardWorkflow()to automatically select useful dimensions whenlinear_reduction_dims_use = NULL. - Renamed
RunDimReduction()toRunDimsReduction()and updated downstream callers/documentation accordingly. -
RunStandardWorkflow(): Whenlinear_reduction_dims_use = NULL, now uses estimated dimensions stored in the reduction (viaRunDimsEstimate()) when available, with fallback to the first 50 dimensions. - Added Seurat v5 integration methods:
CCA_integrate(),RPCA_integrate(),fastMNN5_integrate(),Harmony5_integrate(), andscVI5_integrate()viaSeurat::IntegrateLayers(), and exposed them throughRunIntegration(). - Added
Coralysis_integrate()and exposed Coralysis throughRunIntegration(), following the official Seurat v5 compatible workflow viaSingleCellExperiment. - Added
h5ad_to_srt()for reading.h5adfiles directly intoSeuratobjects viascanpy.read_h5ad(), with automatic CSR/float64 coercion to avoid reticulate conversion issues. Layers that fail conversion are gracefully skipped and reported. -
adata_to_srt(): Improved robustness of layer conversion — each layer is now wrapped intryCatch()so that individual failures no longer abort the entire conversion; skipped layers are reported as warnings. -
RunCellChat(): Enhanced to support condition-specific analyses and pairwise merged comparisons viagroup_columnandgroup_cmpparameters. - Added
RunCellphoneDB()for running CellphoneDB cell-cell communication analysis on aSeuratobject through the official Python package, with support for species conversion and results stored insrt@tools[["CellphoneDB"]]. - Added
RunNichenetr()andRunMultiNichenetr()for running NicheNet and MultiNicheNet analysis onSeuratobjects with standardized result storage. - Added unified cell-cell communication plotting functions
CCCStatPlot(),CCCHeatmap(), andCCCNetworkPlot()for CellChat, CellphoneDB, NicheNet, and MultiNicheNet results. - Remove
CellChatPlot().
- Added
-
fix:
-
RunUMAP2(): Fixed reduction lookup to check existing reduction names before falling back toDefaultReduction(), avoiding errors when the exact reduction name is already present.
-
scop 0.8.6
-
feat:
- Added
RunGSVA()for gene set variation analysis andGSVAPlot()for visualization of GSVA results. Related issue #146 (@mengxu98). -
RunMetabolism()- Added
RunMetabolism()for single-cell metabolism pathway scoring with support forAUCell,GSVA,ssGSEA, and optionalVISION, andMetabolismPlot()for visualization -
RunMetabolism()now uses scMetabolism KEGG / Reactome metabolism pathway definitions to identify metabolism-related terms, then rebuilds pathway gene sets from updatedPrepareDB()annotations, enabling cached database updates and cross-species metabolism scoring. Related issue #146 (@mengxu98).
- Added
- Added
RunDecontX()and integrated optionaldecontXambient RNA decontamination intoRunCellQC(), including contamination metadata, optional decontaminated assay output, and threshold-based QC filtering. Related issue #147 (@mengxu98).
- Added
-
fix:
-
FeatureStatPlot(): Fixed duplicated X/Y axis titles and main title whenstack = TRUEwiththeme_argsortitle. Stack assembly now strips axis and plot titles from non-edge panels and draws a single shared ylab/title via gtable; theme styling fromtheme_args(e.g.axis.title.y,title/plot.title) is applied to these shared grobs. Related issue #145 (@PanSX-Dr).
-
-
docs:
- Updated the README badge/logo.
-
data:
- Removed the example datasets
ifnb_sub,ref_scHCL, andref_scZCL.
- Removed the example datasets
scop 0.8.5
-
feat:
- Default palette changed from
"Paired"to"Chinese". Seethisplot::ChineseColors()for details. - Unified the
coresparameter across multiple functions (DynamicHeatmap(),FeatureHeatmap(),GroupHeatmap(), andheatmap_enrichment()), ensuringcoresis correctly threaded through toRunEnrichment(). -
RunMonocle2()andRunMonocle3(): Addedxlabandylabparameters, passed through to internalCellDimPlot()andFeatureDimPlot()calls. -
ListDB(): Now supports multiple species in thespeciesparameter simultaneously and addsSpeciesandDBcolumns to the output data frame for clearer identification. - Moved
is_outliertothisutils::is_outlier(). -
configure_apple_silicon_env()(Python function): Added OpenMP compatibility handling on macOS arm64 by prepending environmentlibpaths toDYLD_FALLBACK_LIBRARY_PATH/DYLD_LIBRARY_PATHand preloadinglibomp.dylib/libiomp5.dylibviactypes.CDLL(..., RTLD_GLOBAL)to reducescanpy/python-igraphimport conflicts. -
scVI_integrate(): Unified parameter naming by renamingnum_threadstocoresfor consistency across integration functions. - Added
find_neighbors_and_clusters()andrun_nonlinear_reduction()helper functions to unify operations across integration functions and reduce redundant code.
- Default palette changed from
-
fix:
-
PrepareDB():- TF database now uses AnimalTFDB4 as the data source.
- MP database - the Web Archive URL year is now dynamically determined from the current date, and the archive snapshot date for all MP-related file downloads (
VOC_MammalianPhenotype.rpt,MGI_Gene_Model_Coord.rpt,MGI_GenePheno.rpt) is extracted from the server index page to ensure consistent versioning. - hTFtarget data download URL has been changed from
"http://bioinfo.life.hust.edu.cn/static/hTFtarget/file_download/tf-target-infomation.txt"to"https://guolab.wchscu.cn/static/hTFtarget/file_download/tf-target-infomation.txt". - CSPA data download URL has been changed from
"https://wlab.ethz.ch/cspa/data/S1_File.xlsx"to"https://raw.githubusercontent.com/mengxu98/CSPA/main/S1_File.xlsx".
-
LIGER_integrate()- Migrated to the
rliger2.x workflow (rliger::runIntegration()+rliger::quantileNorm()onSeuratobject) and now prepares/uses theligerScaleDatalayer viarliger::scaleNotCenter()before integration. - Updated argument naming from
LIGER_dims_usetoliger_dims_use, and removed legacy quantile-normalization parameter compatibility mapping (ref_dataset), keepingreferenceas the supported interface.
- Migrated to the
- Optimized the installation of some Python packages on Apple Silicon devices.
-
-
docs:
- Updated README example code and visualizations. After regenerating figures, the package size was reduced by ~3 MB.
scop 0.8.4
-
fix:
-
FeatureStatPlot()/ExpressionStatPlot(): Fixed box and violin x-axis misalignment whenadd_box = TRUEwithsplit.by. Groups with fewer than 2 observations are now filtered before violin density estimation (with a warning), and the violin layer uses a consistentposition_dodge(width = 0.9)to match the boxplot. Related issue #123 (@oranges7).
-
scop 0.8.3
-
feat:
-
RunDynamicFeatures(): Added PreTSA method for dynamic feature fitting. The PreTSA algorithm inscophas been re implemented to support parallelization for higher performance. Original research: PreTSA: computationally efficient modeling of temporal and spatial gene expression patterns. Usefit_method = "pretsa"for B-spline-based piecewise truncated spline analysis;fit_method = "gam"(default) keeps generalized additive models. PreTSA supportsknot(0or"auto") andmax_knot_allowedwhenknot = "auto". Relate issue #133. -
CellDimPlot()andFeatureDimPlot(): Addedlegend.titleparameter (defaultNULL) to control the legend title. WhenNULL, default titles are used (e.g. group name forCellDimPlot, feature or empty forFeatureDimPlot). -
ExpressionStatPlot()andFeatureStatPlot(): Addedlegend.titleparameter (defaultNULL) for single-legend plots. WhenNULL, the default title (e.g.keynmor feature/group name) is used.FeatureStatPlot()forwardslegend.titletoExpressionStatPlot(). - Moved
StatPlotfunction tothisplot::StatPlot.
-
-
fix:
- Differential expression plots (
VolcanoPlot(),DEtestManhattanPlot(),DEtestRingPlot()): addedonly.pos = TRUEfor positive-only visualization.DEtestManhattanPlot()now keeps the cell-type track centered at y = 0 and sizes the track from the nearest point distance around zero. -
DynamicHeatmap()/heatmap_enrichment(): Fixed incorrectdbhandling when using customTERM2GENE/TERM2NAME. Enrichment results withDatabase = "custom"could be incorrectly filtered by defaultdbvalues (e.g."GO_BP"), causing false “No term enriched using the threshold” warnings even when enrichment succeeded. Relate issue #133 (@1228849000).
- Differential expression plots (
scop 0.8.2
-
feat:
- Add the
DEtestPlot()function, which calls the originalVolcanoPlot()and adds two plot types, Manhattan and Ring, controlled by theplot_typeparameter (c("volcano", "manhattan", "ring"), default"volcano"). Add standalone functionsDEtestManhattanPlot()andDEtestRingPlot()for direct use. Relate issue #121 (@ericavalentini). - Differential expression visualization (
DEtestPlot(),VolcanoPlot(),DEtestManhattanPlot(),DEtestRingPlot()): addedresparameter to accept existing DE results (data.frame). Whenresis provided,srtis ignored. Data processing supports: (1)group1orclustercolumn for grouped plots; (2) no grouping column for a single panel; (3) gene names from row names whengenecolumn is missing. Relate issue #129 (@mengxu98). -
PrepareEnv(): Updateversionparameter to specify the Python version of the conda environment. Default is"3.11-1"on Windows and"3.10-1"on macOS and Unix. Relate issue #103 (@PanSX-Dr). -
RunNMF(): Add thecoresparameter forRunNMF()and optimize the printed message. - Removed the setting in Python functions that prevents drawing functions from causing R crashes.
- Add the
-
fix:
-
RunPalantir(): Fixed unusedplot_formatparameter error. The parameter is now properly excluded from arguments passed to Python functions. Relate issue #126 (@christinejay990202-dev).
-
scop 0.8.1
-
fix:
-
FeatureHeatmap(): Fixedgroup_palcolorwhen a named vector is passed: the function previously used only the first color for all groups becausegroup_palcolor[[1]]on a vector returns a single element. Now whengroup.byhas length 1, a vector is automatically wrapped as a list; whenwithin_groups = TRUE,group_palcoloris expanded in line withgroup_palette. -
GroupHeatmap(): Samegroup_palcolorfix asFeatureHeatmap(): support for named-vector input and correct expansion whenwithin_groups = TRUE.
-
-
docs:
-
group_bymodified togroup.byto unify documentation, involving functions:RunCellRank(),RunDEtest(),VolcanoPlot(),RunEnrichment(),EnrichmentPlot(),RunGSEA(),GSEAPlot(),RunPalantir(),RunPAGA(),RunWOT(),RunSCVELO(), releated to #120.
-
scop 0.8.0
-
feat:
-
RunMonocle2(): New function for performing Monocle2 trajectory analysis with support for various dimensionality reduction methods (DDRTree, ICA, tSNE, SimplePPT, L1-graph, SGL-tree). Uses the fixed version of monocle2 from mengxu98/monocle. -
RunMonocle3(): New function for performing Monocle3 trajectory analysis with support for cell ordering, trajectory learning, and pseudotime computation. -
RunCytoTRACE(): Newscopimplementation for running CytoTRACE 2 analysis to predict cellular potency scores and categories (Differentiated, Unipotent, Oligopotent, Multipotent, Pluripotent, Totipotent) with support for human and mouse species. -
CytoTRACEPlot(): New function for visualizing CytoTRACE 2 analysis results.
-
scop 0.7.9
-
docs:
- Optimized
@inheritParamsusage to reduce redundant parameter definitions. - Unified parameter naming: renamed
group_bytogroup.byfor consistency with Seurat conventions inRunMonocle3(),RunPalantir(),RunSCVELO(),RunWOT(),CellCorHeatmap(), andRunDynamicFeatures().
- Optimized
scop 0.7.8
-
fix:
-
RunPalantir(): Fixed unusedplot_formatparameter error. The parameter is now properly excluded from arguments passed to Python functions. Relate issue #114 (@Moonerss). -
RunSCVELO(): Fixed PAGA computation error by replacingscv.tl.pagawithsc.tl.paga(scanpy implementation) for better stability. The function now uses the same PAGA implementation asRunPAGA()function. -
RunCellRank(): Fixed GPCCA Schur decomposition error by adding fallback mechanism. Whenbrandtsmethod fails with “subspace_angles” error, the function automatically trieskrylovmethod. If both methods fail, it automatically switches to CFLARE estimator for more robust computation. -
RunCellRank(): Fixedrecover_dynamicserror by ensuringvelocity_graphandvelocity_graph_negare properly set before callingscv.tl.recover_dynamics()for latent time computation.
-
-
feat:
-
adata_to_srt(): Removed automatic removal of “X_” prefix from dimensionality reduction names inobsmkeys. The function now preserves original reduction names as they are stored in AnnData objects.
-
-
data:
- Reducing the size of
pancreas_subexample dataset.
- Reducing the size of
scop 0.7.7
-
feat:
-
adata_to_srt(): Enhanced to support multiple AnnData object types including Python AnnData objects (from scanpy/reticulate), R6 AnnData objects from theanndatapackage (AnnDataR6), and R6 AnnData objects from theanndataRpackage (InMemoryAnnData). Added internal helper functionsget_adata_element()andget_adata_names()for better compatibility. Relate issues #67 (@lisch7), #91 (@mengxu98) and commit91#issuecomment.
-
-
fix:
-
RunDEtest(): Fixed error when comparing one cluster against multiple clusters usinggroup1andgroup2parameters. Relate issue #111 (@zhaoxiaoyan9225). -
AnnotateFeatures(): Fixed bug where the function would fail when processing GTF file annotations due to column name matching issues during data naming. The function now correctly handles column name intersections when merging annotation data.
-
scop 0.7.6
-
feat:
-
RunDM(): Added automatic PCA-based dimensionality reduction when using many features (>1000) to speed up diffusion map computation. Thenpcsparameter can be used to control the number of principal components used for pre-processing.
-
scop 0.7.5
-
fix:
-
CellScoring(): Fixed bug where the function failed to build results. Relate issue #98 (@SuperrNaruto).
-
-
feat:
-
RunDEtest(): Fixed compatibility issue with SeuratObject 5.0.0+ by replacing deprecatedAssays()slotargument withLayerData(). Relate issue #100 (@mattizecos). -
RunDM(): Added automatic PCA-based dimensionality reduction when using many features (>1000) to speed up diffusion map computation. Thenpcsparameter can be used to control the number of principal components used for pre-processing.
-
scop 0.7.3
-
feat:
-
RunCellTypist(): New function for cell type annotation using the CellTypist method. -
CellTypistModels(): New function for downloading and managing CellTypist pre-trained models.
-
scop 0.7.2
-
feat:
-
RunCellRank(): Performance optimizations and code improvements.
-
scop 0.7.1
-
fix:
-
CellDimPlot(): Fixed issue where NA values appeared in labels. Relate issue #93 (@12345nkjil).
-
scop 0.7.0
-
feat:
-
PrepareEnv(): Integrateduvas the primary Python package installer for improved installation speed. -
check_python(): Now usesuvas the primary installation tool withpipas fallback, significantly improving package installation speed. - Added
find_uv()andinstall_uv()internal functions for managinguvpackage manager installation and detection.
-
scop 0.6.6
-
docs:
- Unified documentation format across all R functions:
- Standardized return value tags: Changed all
@returnsto@returnfor consistency. - Unified parameter documentation: Replaced all
\code{value}with Markdown backticks`value`format. - Standardized default value descriptions.
- Added
@mdtags: Added@mdtags to all functions using Markdown syntax in documentation. - Enhanced cross-references: Added
@seealsolinks to related functions where appropriate.
- Standardized return value tags: Changed all
- Unified documentation format across all R functions:
scop 0.6.5
-
feat:
-
PrepareEnv():- Added comprehensive environment variable configuration to prevent crashes when calling Python functions, including setting thread limits for OMP, OPENBLAS, MKL, NUMBA, and other libraries. This improves stability on all platforms, especially Apple silicon Macs.
- Added
accept_conda_tos()function to automatically accept conda Terms of Service for required channels, improving the conda environment setup process. - Fixed conda Terms of Service acceptance issue in
PrepareEnv(). The function now automatically accepts conda Terms of Service for required channels, eliminating the need for manual acceptance. This addresses the issue reported in #85.
- Multiple Python-based functions (
RunPAGA,RunSCVELO,RunPalantir,RunCellRank,RunWOT,RunPHATE,RunPaCMAP,RunTriMap): Enhanced message formatting and code improvements. -
PrepareSCExplorer(): Fixed package version dependency issues withshinyandbslibcompatibility. The function now properly handlesbslibtheme configuration to work with bothshiny1.6.0 and 1.7.0+, addressing compatibility errors reported in #87.
-
-
fix:
- Improved code formatting and consistency across multiple functions.
- Enhanced Python functions in
inst/python/functions.pywith better error handling and message formatting.
-
docs:
- Updated documentation for multiple functions to reflect code improvements.
scop 0.6.2
-
feat:
-
CellChatPlot(): Adjusted the size of saved figures for better file size optimization.
-
-
docs:
- Updated README.md to remove references to Monocle2 and Monocle3 (deprecated functions).
scop 0.6.1
-
feat:
-
PrepareEnv(): Improved message formatting and simplified log output for better user experience. - Added
get_conda_envs_dir()helper function to centralize conda environment directory retrieval. -
RunIntegration(): Enhancedintegration_methodparameter definition with explicit method list for better code clarity.
-
-
fix:
- Moved
exist_python_pkgs()function tocheck_package.Rfor better code organization. - Replaced direct
conda_info()$envs_dirs[1]calls withget_conda_envs_dir()helper function for consistency. -
RunSCExplorer(): Updated to usethisplot::palette_listandthisplot::slim_data()instead ofscop::palette_listandscop::slim_data(). - Added
thisplotto dependency checks inRunSCExplorer().
- Moved
-
docs:
- Updated documentation across multiple functions.
scop 0.6.0
-
feat:
-
PrepareEnv(): Enhanced with environment caching mechanism to avoid redundant environment preparation. Improved message formatting and error handling. - Python-based functions (
RunPAGA(),RunSCVELO(),RunPalantir(),RunCellRank(),RunWOT()) now automatically callPrepareEnv()internally, eliminating the need for users to manually prepare the Python environment before using these functions. -
cluster_within_group2(): New function for clustering within groups. - Multiple plotting functions: Replaced
geom_sankey()withggsankey::geom_sankey()for better Sankey diagram support. - Multiple functions: Replaced
:::operator withget_namespace_fun()for safer namespace access.
-
-
fix:
- Removed
RunMonocle()function and related documentation (RunMonocle2.Rd,RunMonocle3.Rd). - Removed
projection_functions.Rfile (functions moved to other locations). - Replaced custom theme functions with
thisplot::theme_this()(exported astheme_scop()). - Replaced direct
log_message()calls withthisutils::log_message()for consistency. - Removed
palette_listdata object.
- Removed
-
deps:
- Moved
clifromSuggeststoImportsfor better message formatting support. - Added
thisplottoImportsfor theme and utility functions. - Added
ggsankeytoSuggestsfor Sankey diagram support. - Added remote dependencies:
theislab/destiny,mengxu98/thisplot. - Removed unused dependencies:
Biobase,BiocGenerics,concaveman,DDRTree,glmGamPoi,hexbin,monocle,png,ragg,tidyr.
- Moved
-
docs:
- Updated documentation across multiple functions to reflect code refactoring.
- Improved code organization and maintainability.
scop 0.5.5
-
fix:
- Fixed
VelocityPlot()function error inplot_type = "grid"mode: replaced vectorized arrow length with fixed-length arrows (using mean length) to resolvevapply()error that occurred whengrid::arrow()received a vector instead of a single value, see #74.
- Fixed
scop 0.5.4
-
fix:
- Fixed parameter name error in
CheckDataType()function calls: changeddataparameter toobjectinRunKNNMap(),RunSymphonyMap(),RunScmap(),RunPCAMap(), andRunSingleR()functions, see #68. - Fixed
SingleCellExperimentobject creation inRunScmap()andRunSingleR()functions: changed from coercingSummarizedExperimentto directly constructingSingleCellExperimentobjects.
- Fixed parameter name error in
scop 0.5.3
-
feat:
-
PrepareDB(): Changed defaultEnsembl_versionparameter from103toNULLfor more flexible version handling. - Added Python version
log_message()for Python-based functions (RunSCVELO(),RunPAGA(),RunPalantir(),RunCellRank(),RunWOT()) and addedverboseparameter inheritance and improved message formatting through cli formatting.
-
-
fix:
- Delete
harmonizomeapi.pyfile. - Move
scop_analysis.pyinto a singlefunctions.pyfile ininst/python/for better code organization and maintainability.
- Delete
-
docs:
- Improved parameter documentation consistency.
scop 0.5.1
-
docs:
- Improved reference formatting and consistency across multiple functions.
- Enhanced documentation clarity and readability.
scop 0.5.0
-
feat:
-
RunCellChat(): New function to perform CellChat analysis for investigating cell-to-cell communication with support for human, mouse, and zebrafish species. -
CellChatPlot(): New function to visualize CellChat analysis results with various plot types and customization options. - Multiple integration functions: Improved error messages and message formatting for better user experience.
-
-
deps:
- Added CellChat package dependency with remote repository
jinworks/CellChat.
- Added CellChat package dependency with remote repository
-
docs:
- Updated README.md with improved code formatting and examples.
- Enhanced documentation for cell communication analysis functions.
- Improved error messages and user guidance across integration functions.
-
fix:
- Removed some example figures to optimize package installation size.
scop 0.4.0
-
feat:
-
RunProportionTest(): New function to perform Monte-carlo permutation test for quantifying cell proportion differences between conditions. -
ProportionTestPlot(): New function to generate proportion test plots with customizable significance thresholds and visualization options. - Multiple Python-based functions: add
\dontrun{}blocks for Github workfolw checking.
-
-
docs:
- Added comprehensive documentation for new proportion testing functions.
- Enhanced example documentation across multiple functions.
- Updated package documentation and examples.
scop 0.3.3
-
feat:
- Multiple functions: Improved parameter documentation formatting and consistency across the package.
scop 0.3.2
-
feat:
-
GetFeaturesData()andAddFeaturesData(): Enhanced argument clarity, added input validation, and standardized return values forSeurat,Assay, andAssay5objects. -
CellCorHeatmap():- Renamed parameters:
query_cell_annotation→query_annotation,ref_cell_annotation→ref_annotation. - Improved error message formatting through cli formatting.
- Simplified variable assignments and improved readability.
- Renamed parameters:
-
-
docs:
- Comprehensive documentation updates across multiple functions including
AnnotateFeatures,CellDimPlot,CellStatPlot,FeatureStatPlot,GroupHeatmap,RunCellQC, and others. - Improved parameter descriptions and function clarity.
- Comprehensive documentation updates across multiple functions including
scop 0.3.1
-
feat:
-
EnrichmentPlot()andGSEAPlot(): Removed conditional font face styling (face = ifelse()logic) for better text rendering consistency. Set the default value oflineheightfrom0.5to0.7. - Updated
check_r()function for improved package checking functionality. - Updated reexports functionality.
-
-
docs:
- Updated documentation formatting and consistency.
scop 0.3.0
-
feat:
- Fixed
segmentation faultsandR crasheson M-series MacBook when running Python functions. -
RunPAGA(): Enhanced with M-series MacBook detection and automatic environment configuration. -
RunSCVELO(): Added ARM64-specific optimizations to prevent crashes and ensure stable execution. -
RunCellRank(): Implemented M-series compatibility with proper NUMBA configuration. -
RunPalantir(): Added ARM64 support with single-threaded execution mode. -
RunWOT(): Enhanced with M-series MacBook environment variable settings. -
RunTriMap(): Added M-series MacBook compatibility for dimensionality reduction. -
RunPaCMAP(): Implemented ARM64-specific environment configuration. -
RunPHATE(): Added M-series MacBook support for non-linear dimensionality reduction. -
RunCellQC(): Enhanced both scrublet and doubletdetection functions with ARM64 compatibility.
- Fixed
-
docs:
- Updated function documentation to reflect M-series MacBook compatibility.
- Added technical notes about ARM64 architecture considerations.
scop 0.2.9
-
fix:
- Fix bug for
RunSCVELO().
- Fix bug for
-
docs:
- Updated documentation for some functions.
scop 0.2.7
-
feat:
- Added an internal function
.check_pkg_status()to check if an R package is installed. - Update function
CheckDataType()to S4 class function. - Update function
RunStandardWorkflow(), make it more efficient.
- Added an internal function
-
data:
- Delete
lifemapdata, including:lifemap_cell,lifemap_compartmentandlifemap_organ. - Reconstructed the sample data for both
panc8_subandpancreas_sub, retaining only the basicSeuratobject.
- Delete
scop 0.2.6
-
feat:
- Added
remove_r()function for easy remove R packages. - Rename function:
RemovePackages()toremove_python(). - Removed other methods of installing R packages from the
check_r()function, only retaining pak::pak. - Delete useless import packages:
BBmisc,BiocManager,covr,devtools,promisesandwithr. - Optimize the structure of
_pkgdown.ymlfile.
- Added
-
docs:
- Updated documentation for some functions.
scop 0.2.4
-
feat:
- Rename functions:
check_srt_merge()toCheckDataMerge(),check_srt_list()toCheckDataListandcheck_data_type()toCheckDataType.
- Rename functions:
scop 0.2.2
-
feat:
- Replace all
BiocParallel::bplapply()withthisutils::parallelize_fun().
- Replace all
-
fix:
- Fix bugs in
RunSingleR().
- Fix bugs in
scop 0.2.0
-
feat:
- Added
remove_python()function for easy remove Python packages.
- Added
-
fix:
- Corrected an issue in
py_to_r2()function (intrinsic function), which ensures that Python-dependent functions likeRunPAGA()andRunSCVELO()function run correctly.
- Corrected an issue in
scop 0.1.9
-
feat:
- Update
CellScoring()andAddModuleScore2()functions. Now, new parameterscoresandverbosehave been added. -
AddModuleScore2()function no longer uses theBiocParallel::bpparam()function to enable parallelization, butthisutils::parallelize_fun, and thecoresparameter is used to control the number of cores inthisutils::parallelize_fun.
- Update
scop 0.1.5
-
fix:
- Fix error for
RunPalantir()function, see #23.
- Fix error for
scop 0.1.4
-
feat:
- Update
.onAttach(), now.onAttach()will print more information about conda and Python. - Update
PrepareEnv()function for easy add or update a conda environments and install Python packages. - Added
ListEnv()andRemoveEnv()functions for easy management of conda environment and Python packages.
- Update
scop 0.1.3
-
feat:
- Added
TACSPlot()function for creating FACS-like plots. Please refer to Kernfeld et al. paper and Github for specific information.
- Added
scop 0.0.9
-
fix:
- Fix a bug for
PrepareEnv()function. - The default Python version is now set to
3.10-1.
- Fix a bug for
scop 0.0.6
-
feat:
- Add
GetAssayData5()function, a reimplementation ofGetAssayData(), for compatibility with Seurat v5Assayobjects. - Updated
GetFeaturesData()andAddFeaturesData()function to support retrieving and adding feature metadata.
- Add