README.md

LOCUS: Low-rank Decomposition of Brain Connectivity Matrices with Universal Sparsity Method

LOCUS (Low-rank Decomposition of Brain Connectivity Matrices with Universal Sparsity Method) is an innovative blind source separation method that incorporates regularization and low-rank structure to investigate brain connectivity. This package is as an implementation of the LOCUS method proposed by Wang and Guo, 2023.

Installation

You can install LOCUS from CRAN with:

install.packages("LOCUS")

Method

LOCUS is a fully data-driven blind signal separation method for decomposing imaging-based brain connectivity data to reveal underlying neural circuits. Specifically, LOCUS decomposes participants' connectivity data, $\mathbf Y$, into a linear combination of latent connectivity traits or source signals, ${\mathbf S_{\ell}}$, weighted by mixing coefficients ${\mathbf a_{\ell}}$, $\ell = 1, \dots, q$, i.e. $$\mathbf Y = \sum_{\ell = 1}^q \mathbf a_{\ell} \mathbf S_{\ell} + \text{error}.$$

Here, each of the connectivity source signals $\mathbf S_\ell$ represents an underlying neural circuit and the mixing coefficients ${\mathbf{a}_{\ell}}$ represent subject-specific loadings on the trait. The method has the following highlights:

The LOCUS() is the main function of our LOCUS algorithm. The LOCUS_BIC_selection() selects the tuning parameter $\phi$ and $\rho$ based on our proposed BIC-like criterion.

Explanation of Arguments

1. LOCUS function

LOCUS(Y, q, V, MaxIteration=100, penalty="SCAD", phi = 0.9, approximation=TRUE, 
preprocess=TRUE, espli1=0.001, espli2=0.001, rho=0.95, demean = TRUE, silent=FALSE)

2. LOCUS_BIC_selection function

LOCUS_BIC_selection(Y, q, V, MaxIteration=50, penalty="SCAD", 
phi_grid_search=seq(0.2, 1, 0.2), rho_grid_search=c(0.95), 
espli1=0.001, espli2=0.001, save_LOCUS_output=TRUE, 
preprocess=TRUE, demean = TRUE)

Explanation of Output

1. LOCUS function

The output will be a list with 4 components as such:

2. LOCUS_BIC_selection function

Function outputs a list including the following:

Example

1. A simple simulation

# library 
library(LOCUS)

# Simulated the data to use
V = 50
S1 = S2 = S3 = matrix(0,ncol = V,nrow = V)
S1[5:20,5:20] = 4;S1[23:37,23:37] = 3;S1[40:48,40:48] = 3
S2[15:20,] = -3;S2[,15:20] = -3
S3[15:25,36:45] = 3; S3[36:45,15:25] = 3
Struth = rbind(Ltrans(S1,FALSE) , Ltrans(S2,FALSE), Ltrans(S3,FALSE))
set.seed(100)
Atruth = matrix(rnorm(100*3),nrow=100,ncol=3)
Residual = matrix(rnorm(100*dim(Struth)[2]),nrow=100)
Yraw = Atruth%*%Struth + Residual

# visualize source signal
par(mfrow=c(1,3))
image(Ltrinv(Struth[1,],V,FALSE))
image(Ltrinv(Struth[2,],V,FALSE))
image(Ltrinv(Struth[3,],V,FALSE))

The true source signals

Conduct LOCUS to decompose FC and unveil underlying source signals.

## Run Locus on the data 
Locus_result = LOCUS(Yraw,3,V)

## Visualize the result
par(mfrow=c(1,3))
image(Ltrinv(Locus_result$S[3,],V,FALSE))
image(Ltrinv(-Locus_result$S[1,],V,FALSE))
image(Ltrinv(-Locus_result$S[2,],V,FALSE))

Check the estimated source signals.

2. Examples of connectivity traits extracted from Philadelphia Neurodevelopmental Cohort (PNC) study rs-fMRI connectivity data

The three most reproducible connectivity traits estimated by LOCUS are depicted along with their top 1% brain connections. Blue denotes negative connections, while red indicates positive connections.

References

If you find this package useful, please cite:

@article{wang2023locus,
  title={LOCUS: A regularized blind source separation method with low-rank structure for investigating brain connectivity},
  author={Wang, Yikai and Guo, Ying},
  journal={The Annals of Applied Statistics},
  volume={17},
  number={2},
  pages={1307--1332},
  year={2023},
  publisher={Institute of Mathematical Statistics}
}


Scarlett422301/LOCUS documentation built on April 8, 2024, 4:47 p.m.