Skip to contents

Identifies phenotype-associated cell subpopulations in single-cell data using regularized regression on matched bulk expression profiles.

Usage

DoScissor(
   path2load_scissor_cache = NULL,
   path2save_scissor_inputs = "Scissor_inputs.RData",
   matched_bulk,
   sc_data,
   phenotype,
   label_type = "scissor",
   alpha = c(0.05,NULL),
   cutoff = 0.2,
   scissor_family = c("gaussian", "binomial", "cox"),
   reliability_test = FALSE,
   reliability_test.n = 10,
   reliability_test.nfold = 10,
   cell_evaluation = FALSE,
   cell_evaluation.benchmark_data = "path_to_file.RData",
   cell_evaluation.FDR = 0.05,
   cell_evaluation.bootstrap_n = 100,
   verbose = TRUE,
   ...
)

Arguments

path2load_scissor_cache

Path to precomputed Scissor inputs (RData file). If provided, skips recomputation (default: NULL).

path2save_scissor_inputs

Path to save intermediate files (default: "Scissor_inputs.RData").

matched_bulk

Normalized bulk expression matrix (features × samples). Column names must match phenotype identifiers.

sc_data

Seurat object containing single-cell RNA-seq data.

phenotype

Clinical outcome data. Can be: - Vector: named with sample IDs - Data frame: with row names matching bulk columns

label_type

Character specifying phenotype label type (e.g., "SBS1", "time"), stored in scRNA_data@misc

alpha

Parameter used to balance the effect of the l1 norm and the network-based penalties. It can be a number or a searching vector. If alpha = NULL, a default searching vector is used. The range of alpha is between 0 and 1. A larger alpha lays more emphasis on the l1 norm.

cutoff

(default: 0.2). When alpha=NULL, the cutoff is used to determine the optimal alpha. Higher values increase specificity.

scissor_family

Model family for outcome type: - "gaussian": Continuous outcomes - "binomial": Binary outcomes (default) - "cox": Survival outcomes

reliability_test

Logical to perform stability assessment when scissor_alpha is specified as a value between 0 and 1.(default: TRUE).

reliability_test.n

Number of CV folds for reliability test (default: 10).

reliability_test.nfold

Cross-validation folds for reliability test (default: 10).

cell_evaluation

Logical to perform cell evaluation (default: FALSE).

cell_evaluation.benchmark_data

Path to benchmark data (RData file).

cell_evaluation.FDR

FDR threshold for cell evaluation (default: 0.05).

cell_evaluation.bootstrap_n

Number of bootstrap iterations for cell evaluation (default: 100).

verbose

Logical to print progress messages (default: TRUE).

...

Additional arguments passed to Scissor.v5.optimized.

Value

A list containing:

scRNA_data

A Seurat object with screened cells containing metadata:

scissor

"Positive"/"Negative"/"Neutral" classification

label_type

Outcome label used

scissor_result

Raw Scissor results

reliability_result

If reliability_test=TRUE, contains:

statistic

A value between 0 and 1

p

p-value of the test statistic

AUC_test_real

10 values of AUC for real data

AUC_test_back

A list of AUC for background data

cell_evaluation

If cell_evaluation=TRUE, contains:

evaluation_res

A data.frame with some supporting information for each Scissor selected cell

LICENSE

Licensed under the GNU General Public License version 3 (GPL-3.0). A copy of the license is available at https://www.gnu.org/licenses/gpl-3.0.en.html.

References

Sun D, Guan X, Moran AE, Wu LY, Qian DZ, Schedin P, et al. Identifying phenotype-associated subpopulations by integrating bulk and single-cell sequencing data. Nat Biotechnol. 2022 Apr;40(4):527–38.

See also

Other screen_method: DoDEGAS(), DoscAB(), DoscPAS(), DoscPP()

Other scissor: Scissor.v5.optimized()

Examples

if (FALSE) { # \dontrun{
# Binary outcome example
res <- DoScissor(
  matched_bulk = bulk_matrix,
  sc_data = seurat_obj,
  phenotype = a_named_vector,
  scissor_family = "binomial"
)
} # }