scmet | R Documentation |
Compute posterior of scMET model. This is the main function
which infers model parameters and corrects for the mean-overdispersion
relationship. The most important parameters the user should focus are X
,
L
, user_mcmc
and iter
. Advanced users may want to optimise the model
by changing the prior parameters. For small datasets, we recommend using
MCMC implementation of scMET since it is more stable.
scmet( Y, X = NULL, L = 4, use_mcmc = FALSE, use_eb = TRUE, iter = 5000, algorithm = "meanfield", output_samples = 2000, chains = 4, m_wmu = rep(0, NCOL(X)), s_wmu = 2, s_mu = 1.5, m_wgamma = rep(0, L), s_wgamma = 2, a_sgamma = 2, b_sgamma = 3, rbf_c = 1, init_using_eb = TRUE, tol_rel_obj = 1e-04, n_cores = 2, lambda = 4, seed = sample.int(.Machine$integer.max, 1), ... )
Y |
Observed data (methylated reads and total reads) for each feature
and cell, in a long format |
X |
Covariates which might explain variability in mean (methylation). If
X = NULL, then we do not perform any correction on the mean estimates. NOTE
that if X is provided, |
L |
Total number of basis function to fit the mean-overdispersion trend. For L = 1, this reduces to a model that does not correct for the mean-overdispersion relationship. |
use_mcmc |
Logical, whether to use the MCMC implementation for posterior inference. If FALSE, we run the VB implementation (default). For small datasets, we recommend using MCMC implementation since it is more stable. |
use_eb |
Logical, whether to use 'Empirical Bayes' for parameter
initialization. If |
iter |
Total number of iterations, either MCMC or VB algorithm. NOTE: The STAN implementation of VB relies on black-box variational inference and potentially with relatively small sample sizes sometimes tends to 'search' around the local/global minima. We've seen that with larger sample sizes (thousands of cells), it tends to converge much faster, e.g. around 2-3k iterations. |
algorithm |
Stan algorithm to be used by Stan. If MCMC: Possible values are: "NUTS", "HMC". If VB: Possible values are: "meanfield" and "fullrank". |
output_samples |
If VB algorithm, the number of posterior samples to draw and save. |
chains |
Total number of chains. |
m_wmu |
Prior mean of regression coefficients for covariates X. |
s_wmu |
Prior standard deviation of regression coefficients for covariates X. |
s_mu |
Prior standard deviation for mean parameter |
m_wgamma |
Prior mean of regression coefficients of the basis functions. |
s_wgamma |
Prior standard deviation of regression coefficients of the basis functions. |
a_sgamma |
Gamma prior (shape) for standard deviation for dispersion
parameter |
b_sgamma |
Gamma prior (rate) for standard deviation for dispersion
parameter |
rbf_c |
Scale parameter for empirically computing the variance of the RBFs. |
init_using_eb |
Logical, initial values of parameters for STAN posterior inference. Preferably this should be set always to TRUE, to lower the chances of VB/MCMC initialisations being far away from posterior mass. |
tol_rel_obj |
If VB algorithm, the convergence tolerance on the relative norm of the objective. |
n_cores |
Total number of cores. |
lambda |
The penalty term to fit the RBF coefficients for the mean-overdispersion trend when initialising hyper-parameter with EB. |
seed |
The seed for random number generation. |
... |
Additional parameters passed to |
An object of class scmet_mcmc
or scmet_vb
with the
following elements:
posterior
: A list of matrices
containing the samples from the posterior. Each matrix corresponds to a
different parameter returned from scMET.
Y
: The observed
data Y.
feature_names
: A vector of feature names.
theta_priors
: A list with all prior parameter values, for
reproducibility purposes.
opts
: A list of all additional
parameters when running scMET. For reproducibility purposes.
C.A.Kapourani C.A.Kapourani@ed.ac.uk
scmet_differential
, scmet_hvf_lvf
# Fit scMET (in practice 'iter' should be much larger) obj <- scmet(Y = scmet_dt$Y, X = scmet_dt$X, L = 4, iter = 300)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.