| Title: | Bayesian Spatial Blind Source Separation | 
| Version: | 1.0.6 | 
| Description: | Gibbs sampling for Bayesian spatial blind source separation (BSP-BSS). BSP-BSS is designed for spatially dependent signals in high dimensional and large-scale data, such as neuroimaging. The method assumes the expectation of the observed images as a linear mixture of multiple sparse and piece-wise smooth latent source signals, and constructs a Bayesian nonparametric prior by thresholding Gaussian processes. Details can be found in our paper: Wu, B., Guo, Y., & Kang, J. (2024). Bayesian spatial blind source separation via the thresholded gaussian process. Journal of the American Statistical Association, 119(545), 422-433. | 
| Depends: | R (≥ 3.4.0), movMF | 
| License: | GPL (≥ 3) | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.2.1 | 
| LinkingTo: | Rcpp, RcppArmadillo | 
| Imports: | rstiefel, Rcpp, ica, glmnet, gplots, BayesGPfit, svd, neurobase, oro.nifti, gridExtra, ggplot2, gtools | 
| SystemRequirements: | GNU make | 
| Suggests: | knitr, rmarkdown | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | yes | 
| Packaged: | 2025-10-16 09:04:09 UTC; ben | 
| Author: | Ben Wu [aut, cre], Ying Guo [aut], Jian Kang [aut] | 
| Maintainer: | Ben Wu <wuben@ruc.edu.cn> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-10-16 11:50:06 UTC | 
Initial values
Description
Generate initial values, set up priors and perform kernel decomposition for the MCMC algorithm.
Usage
init_bspbss(
  X,
  coords,
  rescale = TRUE,
  center = FALSE,
  q = 2,
  dens = 0.5,
  ker_par = c(0.05, 20),
  num_eigen = 500,
  noise = 0
)
Arguments
| X | Data matrix with n rows (sample) and p columns (voxel). | 
| coords | Cordinate matrix with p rows (voxel) and d columns (dimension). | 
| rescale | If TRUE, rows of X are rescaled to have unit variance. | 
| center | If TRUE, rows of X are mean-centered. | 
| q | Number of latent sources. | 
| dens | The initial density level (between 0 and 1) of the latent sources. | 
| ker_par | 2-dimensional vector (a,b) with a>0, b>0, specifing the parameters in the modified exponetial squared kernel. | 
| num_eigen | Number of eigen functions. | 
| noise | Gaussian noise added to the initial latent sources, with mean 0 and standard deviation being noise * sd(S0), where sd(S0) is the standard deviation of the initial latent sources. | 
Value
List containing initial values, priors and eigen functions/eigen values of the kernel of the Gaussian process.
Examples
sim = sim_2Dimage(length = 30, sigma = 5e-4, n = 30, smooth = 6)
ini = init_bspbss(sim$X, sim$coords, q = 3, ker_par = c(0.1,50), num_eigen = 50)
levelplot for 2D images.
Description
The function plots 2D images for a data matrix.
Usage
levelplot2D(
  S,
  coords,
  lim = c(min(S), max(S)),
  xlim = c(0, max(coords[, 1])),
  ylim = c(0, max(coords[, 2])),
  color = bluered(100),
  layout = c(1, nrow(S)),
  file = NULL
)
Arguments
| S | Data matrix with q rows (sample) and p colums (pixel). | 
| coords | Coordinates matrix with p rows (pixel) and 2 columns (dimension), specifying the coordinates of the data points. | 
| lim | 2-dimensional numeric vector, specifying the limits for the data. | 
| xlim | 2-dimensional numeric vector, specifying the lower and upper limits of  | 
| ylim | 2-dimensional numeric vector, specifying the lower and upper limits of  | 
| color | Colorbar. | 
| layout | 2-dimensional numeric vector, specifying the number of rows and number of columns for the layout of components. | 
| file | Name of the file to be saved. | 
Value
No return value.
Examples
sim = sim_2Dimage(length = 30, sigma = 5e-4, n = 30, smooth = 6)
levelplot2D(sim$S,lim = c(-0.04,0.04), sim$coords)
MCMC algorithm for Bayesian spatial blind source separation with the thresholded Gaussian Process prior.
Description
Performan MCMC algorithm to draw samples from a Bayesian spatial blind source separation model.
Usage
mcmc_bspbss(
  X,
  init,
  prior,
  kernel,
  n.iter,
  n.burn_in,
  thin = 1,
  show_step,
  ep = 0.01,
  lr = 0.01,
  decay = 0.01,
  num_leapfrog = 5,
  subsample_n = 0.5,
  subsample_p = 0.5
)
Arguments
| X | Data matrix with n rows (sample) and p columns (voxel). | 
| init | List of initial values, see  | 
| prior | List of priors, see  | 
| kernel | List including eigenvalues and eigenfunctions of the kernel, see  | 
| n.iter | Total iterations in MCMC. | 
| n.burn_in | Number of burn-in. | 
| thin | Thining interval. | 
| show_step | Frequency for printing the current number of iterations. | 
| ep | Approximation parameter. | 
| lr | Per-batch learning rate in SGHMC. | 
| decay | Decay parameter in SGHMC. | 
| num_leapfrog | Number of leapfrog steps in SGHMC. | 
| subsample_n | Mini-batch size of samples. | 
| subsample_p | Mini-batch size of voxels. | 
Value
List containing MCMC samples of: A, b, sigma, and zeta.
Examples
sim = sim_2Dimage(length = 30,
                  sigma = 5e-4,
                  n = 30,
                  smooth = 6)
ini = init_bspbss(sim$X, sim$coords,
                  q = 3,
                  ker_par = c(0.1,50),
                  num_eigen = 50)
res = mcmc_bspbss(ini$X,ini$init,
                  ini$prior,ini$kernel,
                  n.iter=200,n.burn_in=100,
                  thin=10,show_step=50)
Write a NIfTI file.
Description
This function saves a data matrix into a NIfTI file.
Usage
output_nii(X, nii, xgrid, file = NULL, std = TRUE, thres = 0)
Arguments
| X | Data matrix with n rows (sample) and p colums (pixel). | 
| nii | a reference NIfTI-class object, representing a image with p voxels. | 
| xgrid | Cordinate matrix with p rows (voxel) and d columns (dimension). | 
| file | The name of the file to be saved. | 
| std | If TRUE, standarize each row of X. | 
| thres | Quantile to threshold each row of X. | 
Value
NIfTI-class object.
Transforms NIfTI to matrix
Description
This function transforms a NIfTI-class object into a matrix.
Usage
pre_nii(nii, mask)
Arguments
| nii | 4D NIfTI-class object with dimensions x,y,z and t. Can be read from NIfTI file with  | 
| mask | Mask variable, also in NIfTI format. | 
Value
List containing the data matrix with t rows and x*y*z colums (voxels), and the coordinates of the voxels.
Simulate image data using ICA
Description
The function simulates image data using a probabilistic ICA model whose latent components have specific spatial patterns.
Usage
sim_2Dimage(length = 20, n = 50, sigma = 0.002, smooth = 6)
Arguments
| length | The length of the image. | 
| n | sample size. | 
| sigma | variance of the noise. | 
| smooth | smoothness of the latent components. | 
Details
The observations are generated using probabilistic ICA:
  X_i(v) = \sum_{j=1}^q A_{i,j} S_j(v) + \epsilon_i(v) , 
where S_j, j=1,...,q are the latent components, A_{i,j} is
the mixing coeffecient and \epsilon_i is the noise term.
Specifically, the number of components in this function is q = 3,
with each of them being a specific geometric shape. The mixing coefficient matrix
is generated with a von Mises-Fisher distribution with the concentration parameter
being zero, which means it is uniformly distributed on the sphere. \epsilon_i
is a i.i.d. Gaussian noise term with 0 mean and user-specified variance.
Value
List that contains the following terms:
- X
- Data matrix with n rows (sample) and p columns (pixel). 
- coords
- Cordinate matrix with p rows (pixel) and d columns (dimension) 
- S
- Latent components. 
- A
- Mixing coefficent matrix. 
- snr
- Signal-to-noise ratio. 
Examples
sim = sim_2Dimage(length = 30, sigma = 5e-4, n = 30, smooth = 6)
Summarization of the MCMC result.
Description
The function summarizes the MCMC results obtained from mcmc_bspbss.
Usage
sum_mcmc_bspbss(res, X, kernel, start = 1, end = 100, select_prob = 0.8)
Arguments
| res | List including MCMC samples, which can be obtained from function  | 
| X | Original data matrix. | 
| kernel | List including eigenvalues and eigenfunctions of the kernel, see  | 
| start | Start point of the iterations being summarized. | 
| end | End point of the iterations being summarized. | 
| select_prob | Lower bound of the posterior inclusion probability required when summarizing the samples of latent sources. | 
Value
List that contains the following terms:
- S
- Estimated latent sources. 
- pip
- Voxel-wise posterior inclusion probability for the latent sources. 
- A
- Estimated mixing coefficent matrix. 
- zeta
- Estimated zeta. 
- sigma
- Estimated sigma. 
- logLik
- Trace of log-likelihood. 
- Slist
- MCMC samples of S. 
Examples
sim = sim_2Dimage(length = 30, sigma = 5e-4, n = 30, smooth = 6)
ini = init_bspbss(sim$X, sim$coords, q = 3, ker_par = c(0.1,50), num_eigen = 50)
res = mcmc_bspbss(ini$X,ini$init,ini$prior,ini$kernel,n.iter=200,n.burn_in=100,thin=10,show_step=50)
res_sum = sum_mcmc_bspbss(res, ini$X, ini$kernel, start = 11, end = 20, select_p = 0.5)