This function subsamples a matrix using either random sampling or meta cells method.
Usage
subsampling(
  matrix,
  subsampling_method = c("sample", "meta_cells", "pseudobulk"),
  subsampling_ratio = 1,
  seed = 1,
  verbose = TRUE,
  ...
)Arguments
- matrix
- The input matrix to be subsampled. 
- subsampling_method
- The method to use for subsampling. Options are - "sample",- "pseudobulk"or- "meta_cells".
- subsampling_ratio
- The percent of all samples used for fit_srm. Default is - 1.
- seed
- The random seed for cross-validation. Default is - 1.
- verbose
- Whether to print progress messages. Default is - TRUE.
- ...
- Parameters for other methods. 
Examples
data(example_matrix)
data("example_ground_truth")
subsample_matrix <- subsampling(
  example_matrix,
  subsampling_ratio = 0.5
)
#> ℹ [2025-10-30 09:49:28] Subsample matrix generated, dimensions: 2500 cells by 18 genes
subsample_matrix_2 <- subsampling(
  example_matrix,
  subsampling_method = "meta_cells",
  subsampling_ratio = 0.5,
  fast_pca = FALSE
)
#> ! [2025-10-30 09:49:28] Number of PCs of PCA result is less than the desired number, using all PCs.
#> ℹ [2025-10-30 09:49:29] Subsample matrix generated, dimensions: 2500 cells by 18 genes
subsample_matrix_3 <- subsampling(
  example_matrix,
  subsampling_method = "pseudobulk",
  subsampling_ratio = 0.5
)
#> ℹ [2025-10-30 09:49:29] Subsample matrix generated, dimensions: 2500 cells by 18 genes
calculate_metrics(
  inferCSN(example_matrix),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:29] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:29] Checking input parameters...
#> ℹ [2025-10-30 09:49:29] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:29] Using 1 core
#> ⠙ [2025-10-30 09:49:29] Running [1/18] ETA:  0s
#> ✔ [2025-10-30 09:49:29] Completed 18 tasks in 217ms
#> 
#> ℹ [2025-10-30 09:49:29] Building results
#> ✔ [2025-10-30 09:49:30] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.952
#> 2     AUPRC  0.437
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
 #> 
calculate_metrics(
  inferCSN(subsample_matrix),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:30] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:30] Checking input parameters...
#> ℹ [2025-10-30 09:49:30] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:30] Using 1 core
#> ℹ [2025-10-30 09:49:30] Building results
#> ✔ [2025-10-30 09:49:30] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.955
#> 2     AUPRC  0.449
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
#> 
calculate_metrics(
  inferCSN(subsample_matrix),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:30] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:30] Checking input parameters...
#> ℹ [2025-10-30 09:49:30] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:30] Using 1 core
#> ℹ [2025-10-30 09:49:30] Building results
#> ✔ [2025-10-30 09:49:30] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.955
#> 2     AUPRC  0.449
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
 #> 
calculate_metrics(
  inferCSN(subsample_matrix_2),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:30] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:30] Checking input parameters...
#> ℹ [2025-10-30 09:49:30] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:30] Using 1 core
#> ℹ [2025-10-30 09:49:30] Building results
#> ✔ [2025-10-30 09:49:31] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.952
#> 2     AUPRC  0.439
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
#> 
calculate_metrics(
  inferCSN(subsample_matrix_2),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:30] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:30] Checking input parameters...
#> ℹ [2025-10-30 09:49:30] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:30] Using 1 core
#> ℹ [2025-10-30 09:49:30] Building results
#> ✔ [2025-10-30 09:49:31] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.952
#> 2     AUPRC  0.439
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
 #> 
calculate_metrics(
  inferCSN(subsample_matrix_3),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:31] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:31] Checking input parameters...
#> ℹ [2025-10-30 09:49:31] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:31] Using 1 core
#> ℹ [2025-10-30 09:49:31] Building results
#> ✔ [2025-10-30 09:49:31] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.955
#> 2     AUPRC  0.449
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
#> 
calculate_metrics(
  inferCSN(subsample_matrix_3),
  example_ground_truth,
  return_plot = TRUE
)
#> ℹ [2025-10-30 09:49:31] Running for <dense matrix>.
#> ◌ [2025-10-30 09:49:31] Checking input parameters...
#> ℹ [2025-10-30 09:49:31] Using `L0` sparse regression model
#> ℹ [2025-10-30 09:49:31] Using 1 core
#> ℹ [2025-10-30 09:49:31] Building results
#> ✔ [2025-10-30 09:49:31] Run done.
#> $metrics
#>      Metric  Value
#> 1     AUROC  0.955
#> 2     AUPRC  0.449
#> 3 Precision  0.529
#> 4    Recall  1.000
#> 5        F1  0.692
#> 6       ACC  0.948
#> 7        JI  0.514
#> 8        SI 18.000
#> 
#> $plot
 #>
#>