R/sig_fit_bootstrap_batch.R
sig_fit_bootstrap_batch.Rd
Read sig_fit_bootstrap for more option setting.
a numeric matrix V
with row representing components and
columns representing samples, typically you can get nmf_matrix
from sig_tally()
and
transpose it by t()
.
a subset of c("NNLS", "QP", "SA")
.
the number of bootstrap replicates.
minimal exposure in a sample, default is 1. Any patient has total exposure less than this value will be filtered out.
a vector of relative exposure threshold for calculating p values.
if TRUE
, use parallel computation based on furrr package.
It can also be an integer for specifying cores.
random seed to reproduce the result.
a job ID, default is NULL
, can be a string. When not NULL
, all bootstrapped results
will be saved to local machine location defined by result_dir
. This is very useful for running
more than 10 times for more than 100 samples.
see above, default is temp directory defined by R.
other common parameters passing to sig_fit_bootstrap, including
sig
, sig_index
, sig_db
, db_type
, mode
, auto_reduce
etc.
a list
of data.table
.
W <- matrix(c(1, 2, 3, 4, 5, 6), ncol = 2)
colnames(W) <- c("sig1", "sig2")
W <- apply(W, 2, function(x) x / sum(x))
H <- matrix(c(2, 5, 3, 6, 1, 9, 1, 2), ncol = 4)
colnames(H) <- paste0("samp", 1:4)
V <- W %*% H
V
#> samp1 samp2 samp3 samp4
#> [1,] 1.666667 2.1 2.566667 0.7
#> [2,] 2.333333 3.0 3.333333 1.0
#> [3,] 3.000000 3.9 4.100000 1.3
if (requireNamespace("quadprog")) {
z10 <- sig_fit_bootstrap_batch(V, sig = W, n = 10)
z10
}
#> ℹ [2024-03-13 10:53:40.941433]: Batch Bootstrap Signature Exposure Analysis Started.
#> ℹ [2024-03-13 10:53:40.943243]: Samples to be filtered out:
#> ℹ [2024-03-13 10:53:40.944718]: Finding optimal exposures (&errors) for different methods.
#> ℹ [2024-03-13 10:53:40.946119]: Calling method `QP`.
#> ℹ [2024-03-13 10:53:40.949574]: Started.
#> ℹ [2024-03-13 10:53:40.950994]: Signature index not detected.
#> ✔ [2024-03-13 10:53:40.952474]: Signature matrix/data.frame detected.
#> ✔ [2024-03-13 10:53:40.953917]: Database and index checked.
#> ✔ [2024-03-13 10:53:40.955455]: Signature normalized.
#> ℹ [2024-03-13 10:53:40.956878]: Checking row number for catalog matrix and signature matrix.
#> ✔ [2024-03-13 10:53:40.958301]: Checked.
#> ✔ [2024-03-13 10:53:40.959737]: Method 'QP' detected.
#> ✔ [2024-03-13 10:53:40.961124]: Corresponding function generated.
#> ℹ [2024-03-13 10:53:40.962498]: Calling function.
#> ℹ [2024-03-13 10:53:40.964167]: Fitting sample: samp1
#> ℹ [2024-03-13 10:53:40.965707]: Fitting sample: samp2
#> ℹ [2024-03-13 10:53:40.96716]: Fitting sample: samp3
#> ℹ [2024-03-13 10:53:40.968673]: Fitting sample: samp4
#> ✔ [2024-03-13 10:53:40.970194]: Done.
#> ℹ [2024-03-13 10:53:40.971603]: Generating output signature exposures.
#> ✔ [2024-03-13 10:53:40.981682]: Done.
#> ℹ [2024-03-13 10:53:40.983498]: Calculating errors (Frobenius Norm).
#> ✔ [2024-03-13 10:53:40.985112]: Done.
#> ℹ [2024-03-13 10:53:40.986586]: 0.037 secs elapsed.
#> ℹ [2024-03-13 10:53:40.989764]: Getting bootstrap exposures (&errors/similarity) for different methods.
#> ℹ [2024-03-13 10:53:40.991318]: This step is time consuming, please be patient.
#> ℹ [2024-03-13 10:53:40.992906]: Processing sample `samp1`.
#> ℹ [2024-03-13 10:53:42.363115]: Processing sample `samp2`.
#> ℹ [2024-03-13 10:53:43.686993]: Processing sample `samp3`.
#> ℹ [2024-03-13 10:53:44.988836]: Processing sample `samp4`.
#> ✔ [2024-03-13 10:53:46.304427]: Gotten.
#> ℹ [2024-03-13 10:53:46.306904]: Reporting p values...
#> ℹ [2024-03-13 10:53:46.308464]: Started.
#> ✔ [2024-03-13 10:53:46.309855]: Batch mode enabled.
#> ✔ [2024-03-13 10:53:46.311711]: Done.
#> ℹ [2024-03-13 10:53:46.313145]: 0.005 secs elapsed.
#> ℹ [2024-03-13 10:53:46.314551]: Started.
#> ✔ [2024-03-13 10:53:46.31592]: Batch mode enabled.
#> ✔ [2024-03-13 10:53:46.317611]: Done.
#> ℹ [2024-03-13 10:53:46.319018]: 0.004 secs elapsed.
#> ℹ [2024-03-13 10:53:46.320452]: Started.
#> ✔ [2024-03-13 10:53:46.321821]: Batch mode enabled.
#> ✔ [2024-03-13 10:53:46.32355]: Done.
#> ℹ [2024-03-13 10:53:46.324952]: 0.004 secs elapsed.
#> ℹ [2024-03-13 10:53:46.326346]: Started.
#> ✔ [2024-03-13 10:53:46.32773]: Batch mode enabled.
#> ✔ [2024-03-13 10:53:46.329414]: Done.
#> ℹ [2024-03-13 10:53:46.330814]: 0.004 secs elapsed.
#> ✔ [2024-03-13 10:53:46.332257]: Done.
#> ℹ [2024-03-13 10:53:46.333606]: Cleaning results...
#> ✔ [2024-03-13 10:53:46.369149]: Outputing.
#> ℹ [2024-03-13 10:53:46.371498]: Total 5.43 secs elapsed.
#> $expo
#> method sample sig exposure type
#> <char> <char> <fctr> <num> <char>
#> 1: QP samp1 sig1 2.000000 optimal
#> 2: QP samp2 sig1 3.000000 optimal
#> 3: QP samp3 sig1 1.000000 optimal
#> 4: QP samp4 sig1 1.000000 optimal
#> 5: QP samp1 sig2 5.000000 optimal
#> 6: QP samp2 sig2 6.000000 optimal
#> 7: QP samp3 sig2 9.000000 optimal
#> 8: QP samp4 sig2 2.000000 optimal
#> 9: QP samp1 sig1 0.333333 Rep_1
#> 10: QP samp1 sig2 6.666667 Rep_1
#> 11: QP samp1 sig1 0.000000 Rep_2
#> 12: QP samp1 sig2 7.000000 Rep_2
#> 13: QP samp1 sig1 7.000000 Rep_3
#> 14: QP samp1 sig2 0.000000 Rep_3
#> 15: QP samp1 sig1 0.000000 Rep_4
#> 16: QP samp1 sig2 7.000000 Rep_4
#> 17: QP samp1 sig1 0.000000 Rep_5
#> 18: QP samp1 sig2 7.000000 Rep_5
#> 19: QP samp1 sig1 0.000000 Rep_6
#> 20: QP samp1 sig2 7.000000 Rep_6
#> 21: QP samp1 sig1 5.333333 Rep_7
#> 22: QP samp1 sig2 1.666667 Rep_7
#> 23: QP samp1 sig1 0.333333 Rep_8
#> 24: QP samp1 sig2 6.666667 Rep_8
#> 25: QP samp1 sig1 7.000000 Rep_9
#> 26: QP samp1 sig2 0.000000 Rep_9
#> 27: QP samp1 sig1 7.000000 Rep_10
#> 28: QP samp1 sig2 0.000000 Rep_10
#> 29: QP samp2 sig1 0.000000 Rep_1
#> 30: QP samp2 sig2 9.000000 Rep_1
#> 31: QP samp2 sig1 9.000000 Rep_2
#> 32: QP samp2 sig2 0.000000 Rep_2
#> 33: QP samp2 sig1 9.000000 Rep_3
#> 34: QP samp2 sig2 0.000000 Rep_3
#> 35: QP samp2 sig1 9.000000 Rep_4
#> 36: QP samp2 sig2 0.000000 Rep_4
#> 37: QP samp2 sig1 0.000000 Rep_5
#> 38: QP samp2 sig2 9.000000 Rep_5
#> 39: QP samp2 sig1 0.000000 Rep_6
#> 40: QP samp2 sig2 9.000000 Rep_6
#> 41: QP samp2 sig1 0.000000 Rep_7
#> 42: QP samp2 sig2 9.000000 Rep_7
#> 43: QP samp2 sig1 0.000000 Rep_8
#> 44: QP samp2 sig2 9.000000 Rep_8
#> 45: QP samp2 sig1 0.000000 Rep_9
#> 46: QP samp2 sig2 9.000000 Rep_9
#> 47: QP samp2 sig1 9.000000 Rep_10
#> 48: QP samp2 sig2 0.000000 Rep_10
#> 49: QP samp3 sig1 0.000000 Rep_1
#> 50: QP samp3 sig2 10.000000 Rep_1
#> 51: QP samp3 sig1 0.000000 Rep_2
#> 52: QP samp3 sig2 10.000000 Rep_2
#> 53: QP samp3 sig1 0.000000 Rep_3
#> 54: QP samp3 sig2 10.000000 Rep_3
#> 55: QP samp3 sig1 3.333333 Rep_4
#> 56: QP samp3 sig2 6.666667 Rep_4
#> 57: QP samp3 sig1 8.333333 Rep_5
#> 58: QP samp3 sig2 1.666667 Rep_5
#> 59: QP samp3 sig1 0.000000 Rep_6
#> 60: QP samp3 sig2 10.000000 Rep_6
#> 61: QP samp3 sig1 8.333333 Rep_7
#> 62: QP samp3 sig2 1.666667 Rep_7
#> 63: QP samp3 sig1 0.000000 Rep_8
#> 64: QP samp3 sig2 10.000000 Rep_8
#> 65: QP samp3 sig1 3.333333 Rep_9
#> 66: QP samp3 sig2 6.666667 Rep_9
#> 67: QP samp3 sig1 10.000000 Rep_10
#> 68: QP samp3 sig2 0.000000 Rep_10
#> 69: QP samp4 sig1 3.000000 Rep_1
#> 70: QP samp4 sig2 0.000000 Rep_1
#> 71: QP samp4 sig1 3.000000 Rep_2
#> 72: QP samp4 sig2 0.000000 Rep_2
#> 73: QP samp4 sig1 3.000000 Rep_3
#> 74: QP samp4 sig2 0.000000 Rep_3
#> 75: QP samp4 sig1 3.000000 Rep_4
#> 76: QP samp4 sig2 0.000000 Rep_4
#> 77: QP samp4 sig1 3.000000 Rep_5
#> 78: QP samp4 sig2 0.000000 Rep_5
#> 79: QP samp4 sig1 0.000000 Rep_6
#> 80: QP samp4 sig2 3.000000 Rep_6
#> 81: QP samp4 sig1 0.000000 Rep_7
#> 82: QP samp4 sig2 3.000000 Rep_7
#> 83: QP samp4 sig1 3.000000 Rep_8
#> 84: QP samp4 sig2 0.000000 Rep_8
#> 85: QP samp4 sig1 3.000000 Rep_9
#> 86: QP samp4 sig2 0.000000 Rep_9
#> 87: QP samp4 sig1 0.000000 Rep_10
#> 88: QP samp4 sig2 3.000000 Rep_10
#> method sample sig exposure type
#>
#> $error
#> method sample errors type
#> <char> <char> <num> <char>
#> 1: QP samp1 0.000 optimal
#> 2: QP samp2 0.000 optimal
#> 3: QP samp3 0.000 optimal
#> 4: QP samp4 0.000 optimal
#> 5: QP samp1 0.236 Rep_1
#> 6: QP samp1 0.283 Rep_2
#> 7: QP samp1 0.707 Rep_3
#> 8: QP samp1 0.283 Rep_4
#> 9: QP samp1 0.283 Rep_5
#> 10: QP samp1 0.283 Rep_6
#> 11: QP samp1 0.471 Rep_7
#> 12: QP samp1 0.236 Rep_8
#> 13: QP samp1 0.707 Rep_9
#> 14: QP samp1 0.707 Rep_10
#> 15: QP samp2 0.424 Rep_1
#> 16: QP samp2 0.849 Rep_2
#> 17: QP samp2 0.849 Rep_3
#> 18: QP samp2 0.849 Rep_4
#> 19: QP samp2 0.424 Rep_5
#> 20: QP samp2 0.424 Rep_6
#> 21: QP samp2 0.424 Rep_7
#> 22: QP samp2 0.424 Rep_8
#> 23: QP samp2 0.424 Rep_9
#> 24: QP samp2 0.849 Rep_10
#> 25: QP samp3 0.141 Rep_1
#> 26: QP samp3 0.141 Rep_2
#> 27: QP samp3 0.141 Rep_3
#> 28: QP samp3 0.330 Rep_4
#> 29: QP samp3 1.037 Rep_5
#> 30: QP samp3 0.141 Rep_6
#> 31: QP samp3 1.037 Rep_7
#> 32: QP samp3 0.141 Rep_8
#> 33: QP samp3 0.330 Rep_9
#> 34: QP samp3 1.273 Rep_10
#> 35: QP samp4 0.283 Rep_1
#> 36: QP samp4 0.283 Rep_2
#> 37: QP samp4 0.283 Rep_3
#> 38: QP samp4 0.283 Rep_4
#> 39: QP samp4 0.283 Rep_5
#> 40: QP samp4 0.141 Rep_6
#> 41: QP samp4 0.141 Rep_7
#> 42: QP samp4 0.283 Rep_8
#> 43: QP samp4 0.283 Rep_9
#> 44: QP samp4 0.141 Rep_10
#> method sample errors type
#>
#> $cosine
#> method sample cosine type
#> <char> <char> <num> <char>
#> 1: QP samp1 1.000000 optimal
#> 2: QP samp2 1.000000 optimal
#> 3: QP samp3 1.000000 optimal
#> 4: QP samp4 1.000000 optimal
#> 5: QP samp1 0.895314 Rep_1
#> 6: QP samp1 0.795784 Rep_2
#> 7: QP samp1 0.925820 Rep_3
#> 8: QP samp1 0.915052 Rep_4
#> 9: QP samp1 0.634858 Rep_5
#> 10: QP samp1 0.967382 Rep_6
#> 11: QP samp1 0.982299 Rep_7
#> 12: QP samp1 0.995086 Rep_8
#> 13: QP samp1 0.908688 Rep_9
#> 14: QP samp1 0.991460 Rep_10
#> 15: QP samp2 0.909964 Rep_1
#> 16: QP samp2 0.960001 Rep_2
#> 17: QP samp2 0.977008 Rep_3
#> 18: QP samp2 0.993859 Rep_4
#> 19: QP samp2 0.973450 Rep_5
#> 20: QP samp2 0.986928 Rep_6
#> 21: QP samp2 0.828303 Rep_7
#> 22: QP samp2 0.892710 Rep_8
#> 23: QP samp2 0.973450 Rep_9
#> 24: QP samp2 0.918262 Rep_10
#> 25: QP samp3 0.682355 Rep_1
#> 26: QP samp3 0.887369 Rep_2
#> 27: QP samp3 0.996748 Rep_3
#> 28: QP samp3 0.964274 Rep_4
#> 29: QP samp3 0.949101 Rep_5
#> 30: QP samp3 0.949671 Rep_6
#> 31: QP samp3 0.997805 Rep_7
#> 32: QP samp3 0.949671 Rep_8
#> 33: QP samp3 0.964274 Rep_9
#> 34: QP samp3 0.944911 Rep_10
#> 35: QP samp4 0.956183 Rep_1
#> 36: QP samp4 0.956183 Rep_2
#> 37: QP samp4 0.956183 Rep_3
#> 38: QP samp4 0.801784 Rep_4
#> 39: QP samp4 0.836660 Rep_5
#> 40: QP samp4 0.986928 Rep_6
#> 41: QP samp4 0.713506 Rep_7
#> 42: QP samp4 0.836660 Rep_8
#> 43: QP samp4 0.836660 Rep_9
#> 44: QP samp4 0.713506 Rep_10
#> method sample cosine type
#>
#> $p_val
#> sample method threshold sig p_value
#> <char> <char> <char> <char> <num>
#> 1: samp1 QP 0.05 sig1 0.0277068123
#> 2: samp1 QP 0.05 sig2 0.0024736045
#> 3: samp2 QP 0.05 sig1 0.0303471317
#> 4: samp2 QP 0.05 sig2 0.0041413035
#> 5: samp3 QP 0.05 sig1 0.0279108829
#> 6: samp3 QP 0.05 sig2 0.0005029653
#> 7: samp4 QP 0.05 sig1 0.0010629845
#> 8: samp4 QP 0.05 sig2 0.0680670588
#>