| Type: | Package | 
| Title: | Clusterwise Independent Component Analysis | 
| Version: | 1.1.1 | 
| Date: | 2024-07-11 | 
| Depends: | ica, RNifti, Rfast, R (≥ 4.3) | 
| Imports: | mclust, plotly, multiway, methods, magrittr, neurobase, oro.nifti, servr, htmltools | 
| Author: | Jeffrey Durieux [aut, cre], Tom Wilderjans [aut], Juan Claramunt Gonzalez [ctb] | 
| Maintainer: | Jeffrey Durieux <durieux.jeffrey@gmail.com> | 
| Description: | Clustering multi-subject resting state functional Magnetic Resonance Imaging data. This methods enables the clustering of subjects based on multi-subject resting state functional Magnetic Resonance Imaging data. Objects are clustered based on similarities and differences in cluster-specific estimated components obtained by Independent Component Analysis. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| URL: | https://www.sciencedirect.com/science/article/pii/S0165027022002448 | 
| NeedsCompilation: | no | 
| Packaged: | 2024-07-14 09:55:56 UTC; jeffr | 
| Repository: | CRAN | 
| Date/Publication: | 2024-07-14 15:20:13 UTC | 
AdjustProb
Description
AdjustProb
Usage
AdjustProb(v, MaxElem)
Arguments
| v | a numeric vector of probabilities of length nClust | 
| MaxElem | number of elements | 
Value
a numeric vector with adjusted probabilities
CICA: Clusterwise Independent Component Analysis
Description
Main function to perform Clusterwise Independent Component Analysis
Usage
CICA(
  DataList,
  nComp,
  nClus,
  method = "fastICA",
  RanStarts,
  RatStarts = NULL,
  pseudo = NULL,
  pseudoFac,
  userDef = NULL,
  userGrid = NULL,
  scalevalue = 1000,
  center = TRUE,
  maxiter = 100,
  verbose = TRUE,
  ctol = 1e-06,
  checks = TRUE
)
Arguments
| DataList | a list of matrices | 
| nComp | number or vector of ICA components per cluster | 
| nClus | number or vector of clusters | 
| method | Component method, default is  | 
| RanStarts | number of random starts | 
| RatStarts | Generate rational starts. Either 'all' or a specific linkage method name (e.g., 'complete'). Use NULL to indicate that Rational starts should not be used. | 
| pseudo | percentage value for perturbating rational starts to obtain pseudo rational starts | 
| pseudoFac | factor to multiply the number of rational starts (7 in total) to obtain pseudorational starts | 
| userDef | a user-defined starting seed stored in a data.frame, if NULL no userDef starting partition is used | 
| userGrid | user supplied data.frame for multiple model CICA. First column are the requested components. Second column are the requested clusters | 
| scalevalue | desired sum of squares of the block scaling procedure | 
| center | mean center matrices | 
| maxiter | maximum number of iterations for each start | 
| verbose | print loss information to console | 
| ctol | tolerance value for convergence criterion | 
| checks | boolean parameter that indicates whether the input checks should be run (TRUE) or not (FALSE). | 
Value
CICA returns an object of class "CICA". It contains the estimated clustering, cluster specific component matrices and subject specific time course matrices
| P | partitioning vector of size  | 
| Sr | list of size  | 
| Ais | list of size  | 
| Loss | loss function value of the best start | 
| FinalLossDiff | value of the loss difference between the last two iterations of the algorithm. | 
| IndLoss | a vector with containing the individual loss function values | 
| LossStarts | loss function values of all starts | 
| Iterations | Number of iterations | 
| starts | dataframe with the used starting partitions | 
Author(s)
Jeffrey Durieux
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
method = 'fastICA',userGrid = NULL, RanStarts = 30, RatStarts = NULL, 
pseudo = c(0.1, 0.2),pseudoFac = 2, userDef = NULL, scalevalue = 1000, 
center = TRUE,maxiter = 100, verbose = TRUE, ctol = .000001)
summary(multiple_output$Q_5_R_4)
plot(multiple_output$Q_5_R_4)
## End(Not run)
Concatenate datablocks into list determined by cluster labels
Description
Internal function for CICA package
Usage
ConcData(DataList, ClusVec)
Arguments
| DataList | list with datablocks | 
| ClusVec | vector with cluster labels | 
Value
list with concatenated datablocks
Author(s)
Jeffrey Durieux
Extract Group ICA parameters
Description
Internal function for CICA package
Usage
ExtractICA(DataList, nComp, method = "fastICA", covL = NULL, indexList = NULL)
Arguments
| DataList | a list object to perform Group ICAs on | 
| nComp | number of ICA components to extract | 
| method | either fastICA else EVD is used | 
| covL | large precomputed covariance matrix, used for EVD method | 
| indexList | list with indices for extract covariances based on cluster indices | 
Value
a list with cluster specific independent components
Plot method for rstarts object
Description
Two step clustering for finding rational start partitions
Usage
FindRationalStarts(
  DataList,
  RatStarts = "all",
  nComp,
  nClus,
  scalevalue = NULL,
  center = TRUE,
  verbose = TRUE,
  pseudo = NULL,
  pseudoFac = NULL
)
## S3 method for class 'rstarts'
plot(x, type = 1, mdsdim = 2, nClus = NULL, ...)
Arguments
| DataList | a list of matrices | 
| RatStarts | type of rational start. 'all' computes all types of hclust methods | 
| nComp | number of ICA components to extract | 
| nClus | Number of clusters for rectangles in dendrogram, default NULL is based on number of clusters present in the object | 
| scalevalue | scale each matrix to have an equal sum of squares | 
| center | mean center matrices | 
| verbose | print output to console | 
| pseudo | percentage value for perturbating rational starts to obtain pseudo rational starts | 
| pseudoFac | how many pseudo starts per rational start | 
| x | an object of  | 
| type | type of plot, 1 for a dendrogram, 2 for a multidimensional scaling configuration | 
| mdsdim | 2 for two dimensional mds configuration, 3 for a three dimensional configuration | 
| ... | optional arguments passed to  | 
Value
dataframe with (pseudo-) rational and dist object based on the pairwise modified RV values
References
Durieux, J., & Wilderjans, T. F. (2019). Partitioning subjects based on high-dimensional fMRI data: comparison of several clustering methods and studying the influence of ICA data reduction in big data. Behaviormetrika, 46(2), 271-311.
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
rats <- FindRationalStarts(DataList = CICA_data$X, nComp = 5, nClus = 4,verbose = TRUE, pseudo = .2)
plot(rats, type = 1, method = 'ward.D2')
plot(rats, type = 2, method = 'ward.D2')
plot(rats, type = 2, method = 'ward.D2', mdsdim = 3)
## End(Not run)
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
Out_starts <- FindRationalStarts(DataList = CICA_data$X,nComp = 5,nClus = 4,scalevalue = 1000)
plot(Out_starts)
plot(Out_starts, type = 2)
plot(Out_starts, type = 2,mdsdim = 3, method = 'ward.D2')
## End(Not run)
Generate random starts
Description
Generate random starts
Usage
GenRanStarts(
  RanStarts,
  nClus,
  nBlocks,
  ARIlim = 0.2,
  itmax = 1000,
  verbose = FALSE
)
Arguments
| RanStarts | number of randomstarts to generate | 
| nClus | number of clusters | 
| nBlocks | number of objects | 
| ARIlim | maximal value of adjusted Rand Index | 
| itmax | maximum number of iterations used to find suitable random starts | 
| verbose | boolean that indicates whether the output should be printed on the console | 
Value
a list where the first element is a matrix with random starts, second element all pairwise ARIs #'
Title
Description
Title
Usage
GenRatStarts(
  DataList,
  RatStarts,
  nComp,
  nClus,
  scalevalue,
  center,
  verbose,
  pseudo,
  pseudoFac
)
Arguments
| DataList | DataList | 
| RatStarts | Type of rational start | 
| nComp | number of components | 
| nClus | number of clusters | 
| scalevalue | value for blockscaling procedure | 
| center | center | 
| verbose | verbose | 
| pseudo | percentage used for perturbation rational starts (between 0) | 
| pseudoFac | multiplication factor for pseudo rational starts | 
Value
out
Generate random clustering
Description
Internal function for CICA package
Usage
GenerateRandomClustering(nElement, nClust, Prob = NULL)
Arguments
| nElement | a positive integer number of elements to be clusterd | 
| nClust | a positive integer: Number of clusters | 
| Prob | numeric vector: Portion of elements in each cluster | 
Value
a numeric vector indicating the clustering
Compute loss per data matrix using multivariate regression
Description
Internal function for CICA package
Usage
Lir(Xi, SkL)
Arguments
| Xi | datablock | 
| SkL | list with Group ICA parameters | 
Value
a numeric vector with loss function values
Recluster based on cluster specific components
Description
Internal function for CICA package
Usage
Reclus(DataList, SrList)
Arguments
| DataList | list with data matrices | 
| SrList | list with Group ICA RSN parameters | 
Value
| newclus | a list object with an updated partitioning | 
| SSminVec | a numeric vector with the lowest loss function values per data block | 
| Loss | a numeric indicating the new loss function value | 
Search for empty clusters
Description
Internal function for CICA package
Usage
SearchEmptyClusters(nClus, newcluster, SSminVec = NULL)
Arguments
| nClus | number of clusters | 
| newcluster | newly updated clustering vector P | 
| SSminVec | loss function values per data block | 
Value
a numeric vector indicating the new partitioning vector without empty clusters
Sequential Model Selection for Multiple CICA model
Description
Sequential Model Selection for Multiple CICA model
Usage
SequentialScree(x)
Arguments
| x | an object of class MultipleCICA | 
Value
a list object
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
ModSelOutput <- SequentialScree(multiple_output)
plot(ModSelOutput)
## End(Not run)
Simulate CICA data
Description
Simulate CICA data
Usage
Sim_CICA(
  Nr,
  Q,
  R,
  voxels,
  timepoints,
  E,
  overlap = NULL,
  externalscore = FALSE
)
Arguments
| Nr | number of subjects per cluster | 
| Q | number of components | 
| R | number of clusters | 
| voxels | number of voxels | 
| timepoints | number of time points | 
| E | proportion of independent gaussian noise | 
| overlap | amount of overlap between S across clusters. Smaller value means more overlap | 
| externalscore | add simulated external score (default is FALSE) | 
Value
a list with simulated CICA data
Examples
## Not run: 
#Use set.seed(1) to obtain the dataset used in the article "Clusterwise
#Independent Component Analysis (CICA): an R package for clustering subjects
#based on ICA patterns underlying three-way (brain) data"
Xe <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
## End(Not run)
Convert Cluster specific independent components to NIFTI format
Description
Convert Cluster specific independent components to NIFTI format
Usage
Sr_to_nifti(x, write = FALSE, ...)
Arguments
| x | an object of  | 
| write | if TRUE, NIfTI files are written to current working directory | 
| ... | other arguments passed to RNifti::writeNifti | 
Value
a list with niftiImage files
Examples
## Not run: 
nifs <- loadNIfTIs('<FolderPath>', toMatrix = T)
outnif <- CICA(DataList = nifs, RanStarts = 2, nComp = 10, nClus = 2)
test <- Sr_to_nifti(outnif,write = T, datatype = 'int16', version = 2)
## End(Not run)
Random clustering generation
Description
Internal function for CICA package
Usage
clusf(nBlocks, nClus)
Arguments
| nBlocks | integer: number of objects | 
| nClus | integer: number of clusters | 
Value
a numeric vector indicating the clustering
Compute modified RV matrix
Description
This function computes a NxN modified RV matrix
Usage
computeRVmat(DataList = DataList, dist = TRUE, verbose = TRUE)
Arguments
| DataList | a list with matrices | 
| dist | boolean if TRUE distance object is returned | 
| verbose | boolean if TRUE progressbar is printed to the console | 
Value
| RVsS | a square similarity matrix of  | 
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
#Compute single subject ICAs (nClus equals length(ExampleData))
output <- CICA(DataList = CICA_data$X, nStarts = 1,
               nComp = 5, nClus = 9, verbose = FALSE)
RV <- computeRVmat(DataList = output$Sr, dist = TRUE,
                    verbose = FALSE)
# apply hierarchical clustering on RV output
hcl <- hclust(RV)
plot(hcl)
# low dimensional visualisation using Classical Multidimensional Scaling
mds <- cmdscale(RV)
plot(mds)
## End(Not run)
Embed images with Papaya
Description
Writes temporary images out from nifti objects or passes character filenames of images to papaya JS viewer
Usage
embed_papaya(images, outdir = NULL)
Arguments
| images | character filenames or  | 
| outdir | output directory for index and all to go | 
Value
Output html
Get Papaya Version
Description
Reads the papaya.js file installed and determines version and build
Usage
get_papaya_version()
Value
List of build and version, both characters
Load Nifti files from directory
Description
Load Nifti files from directory
Usage
loadNIfTIs(dir, toMatrix = TRUE)
Arguments
| dir | Input directory containing nifti files | 
| toMatrix | logical if TRUE nifti's are converted to matrices | 
Value
list object containing Voxel by Time course matrices
Examples
## Not run: 
nifs <- loadNIfTIs('<FolderPath>', toMatrix = T)
outnif <- CICA(DataList = nifs, RanStarts = 2, nComp = 10, nClus = 2)
## End(Not run)
Match components between cluster specific spatial maps
Description
Match components between cluster specific spatial maps
Usage
matcher(x, reference, RV = FALSE, ...)
Arguments
| x | object of class CICA | 
| reference | integer cluster index that serves as the reference. If nifti path is supplied, clusters will be matched to this template | 
| RV | compute modified-RV between cluster components | 
| ... | other arguments | 
Value
out
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
matcher(multiple_output$Q_5_R_4, reference = 1, RV = TRUE)
## End(Not run)
Match components between cluster specific spatial maps
Description
Match components between cluster specific spatial maps
Usage
## S3 method for class 'CICA'
matcher(x, reference = 1, RV = FALSE, ...)
Arguments
| x | object of class CICA | 
| reference | integer cluster index that serves as the reference. If nifti path is supplied, clusters will be matched to this template | 
| RV | compute modified-RV between cluster components | 
| ... | other arguments | 
Value
out
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
matcher(multiple_output$Q_5_R_4, reference = 1, RV = TRUE)
## End(Not run)
The modified-RV coefficient
Description
The modified-RV coefficient
Usage
modRV(X, Y)
Arguments
| X | first matrix, number of rows in X should corresponds to number of rows in Y | 
| Y | second matrix, number of rows in Y should corresponds to number of rows in X | 
Value
A single value, indicating the similarity between the two input matrices
Author(s)
Jeffrey Durieux
References
Smilde AK, Kiers HAL, Bijlsma S, Rubingh CM, van Erk MJ (2009) Matrix correlations for high-dimensional data: the modified RV-coefficient. Bioinformatics 25(3):401–405
See Also
Examples
## Not run: 
#X1 <- matrix(rnorm(1000), 10)
#SVD <- svd(X1)
#X2 <- SVD$u[,-5] %*% diag(SVD$d[-5]) %*% t(SVD$v[,-5])
#modRV(X1,X2)
## End(Not run)
Moore Penrose inverse
Description
Moore Penrose inverse
Usage
mpinv(X)
Arguments
| X | input matrix | 
Value
mp Moore Penrose inverse of matrix X
View images with Papaya
Description
Writes temporary images out from nifti objects or passes character filenames of images to papaya JS viewer
Usage
papaya(images, outdir = NULL, ...)
Arguments
| images | character filenames or  | 
| outdir | output directory for index and all to go | 
| ... | Options to be passed to  | 
Value
Output directory where index.html, js, and copied nii.gz files
Examples
## Not run: 
library(neurobase)
x = nifti(img = array(rnorm(100^3), dim= rep(100, 3)), dim=rep(100, 3), datatype=16)
thresh = datatyper(x > 1)
index.file = papaya(list(x, thresh))
## End(Not run)
Papaya Div element output
Description
Get the necessary div output for embedding a papaya image
Usage
papaya_div()
Value
Character string
Examples
papaya_div()
View images with Papaya
Description
Writes temporary images out from nifti objects or passes character filenames of images to papaya JS viewer
Usage
pass_papaya(
  L = NULL,
  outdir = NULL,
  daemon = FALSE,
  close_on_exit = TRUE,
  sleeper = 3,
  version = "0.8",
  build = "982"
)
Arguments
| L | list of arguments passed to papaya using params | 
| outdir | output directory for index and all to go | 
| daemon | Argument passed to  | 
| close_on_exit | Should the server close once the function finishes? | 
| sleeper | Time in seconds to sleep if  | 
| version | Version of papaya.js and papaya.css to use | 
| build | Build of papaya.js and papaya.css to use | 
Perturbate a clustering
Description
Perturbate a clustering
Usage
perturbation(p, percentage = 0.1)
Arguments
| p | a clustering vector | 
| percentage | percentage (in proportions) | 
Value
peturbated clustering vector
Plot method for CICA
Description
Plot method for CICA. This function shows the cluster specific independent components in an interactive viewer using the papayar package
Usage
## S3 method for class 'CICA'
plot(x, brain = "auto", cluster = 1, ...)
Arguments
| x | Object of  | 
| brain | auto | 
| cluster | Components of cluster to plot. Only used when non fMRI related data is used | 
| ... | other arguments | 
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
plot(multiple_output$Q_5_R_4, cluster = 2)
## End(Not run)
Plot method for sequential model selection
Description
Plot method for the sequential model selection option for CICA
Usage
## S3 method for class 'ModSel'
plot(x, ...)
Arguments
| x | Object of  | 
| ... | other arguments | 
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
ModSelOutput <- SequentialScree(multiple_output)
plot(ModSelOutput)
## End(Not run)
Summary method for class CICA
Description
Summarize a CICA analysis
Usage
## S3 method for class 'CICA'
summary(object, ...)
Arguments
| object | Object of the type produced by  | 
| ... | Additional arguments | 
Value
summary.CICA returns an overview of the estimated clustering of a CICA analysis
| PM | Partitioning matrix | 
| tab | tabulation of the clustering | 
| Loss | Loss function value of the solution | 
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
summary(multiple_output$Q_5_R_4)
## End(Not run)
Summary method for class MultipleCICA
Description
Summarize a CICA analysis
Usage
## S3 method for class 'MultipleCICA'
summary(object, ...)
Arguments
| object | Object of the type produced by  | 
| ... | Additional arguments | 
Value
summary.MultipleCICA returns an overview of the estimated clustering of a CICA analysis
| PM | Partitioning matrix | 
| tab | tabulation of the clustering | 
| Loss | Loss function value of the solution | 
Examples
## Not run: 
CICA_data <- Sim_CICA(Nr = 15, Q = 5, R = 4, voxels = 100, timepoints = 10,
E = 0.4, overlap = .25, externalscore = TRUE)
multiple_output = CICA(DataList = CICA_data$X, nComp = 2:6, nClus = 1:5,
userGrid = NULL, RanStarts = 30, RatStarts = NULL, pseudo = c(0.1, 0.2),
pseudoFac = 2, userDef = NULL, scalevalue = 1000, center = TRUE,
maxiter = 100, verbose = TRUE, ctol = .000001)
summary(multiple_output$Q_5_R_4)
## End(Not run)
Update Papaya build version from GitHub
Description
Updates the papaya version in the papayar package to the most current on GitHub
Usage
update_papaya_build(
  type = c("standard", "minimal", "nodicom", "nojquery", "standard-with-atlas-local",
    "standard-with-atlas"),
  verbose = TRUE
)
Arguments
| type | Type of release. Standard is default | 
| verbose | Should download progress be shown? | 
Value
Result of get_papaya_version after downloading
Scale data blocks to have an equal sum of squares
Description
Internal function for CICA package
Usage
xscale(Xi, value = 1000)
Arguments
| Xi | a single datablock | 
| value | desired sum of squares value of the datablock | 
Value
a matrix that is scale to have a sum of squares of size value