2025-10-15
2024-04-03
2024-02-20
import_scn when importing data that includes
subcortical gray mattersim.rand.graph.par when
controlling for clustering coefficientwithin_module_deg_z_scoreRGtk2 and cairoDevice have been archived)plot method for
brainGraph_resids objects2021-02-03
2020-10-19
mtpc no longer throws an erroranalysis_random_graphs) will no longer throw an error from
within the hidden function get_rand_attrsgraph_attr_dt no longer throws an error if
subnet is a graph-level attribute2020-09-28
bg_GLM
objects. See methods(class='bg_GLM') for the full list.
coeff_determ calculates the coefficient of determination.
coeff_table returns the coefficients table (same as
summary.lm(x)$coefficients) for each region.fastLmBG) that are significantly faster and work with
matrix/array inputs. You can see these with the code
apropos('fastLm').randomise and randomise_3d
can be called directly (although not recommended), and the
partition function is now exported. Each of these is for
permutation-based analysis of linear models. Furthermore, there are new
permutation methods (manly, draperStoneman,
and stillWhite).brainGraphList for a collection of all
graphs at a single density/threshold. There are multiple S3 methods for
this object, including the creation method
make_brainGraphList.make_brainGraph is now a S3 method.inv
calculates the the “unscaled covariance” matrix used in linear models.
pinv calculates the pseudoinverse. qr
calculates the QR decomposition for each matrix in a 3D array.
colMax, colMin, and colMaxAbs
calculate the max, min, and max of the absolute value across matrix
columns. is_binary determines if a matrix consists only of
0’s and 1’s. symmetrize is now a S3 method.
symm_mean symmetrizes a matrix using the mean of
off-diagonal elements.hcp_mmp1.0 (HCP multimodal
atlas), power264, gordon333, and
brainnetomesim.rand.graph.hqs generates random graphs
from random covariance matrices for structural covariance
networks using the HQS algorithm.slicer plots multiple graphs in a
single figure.mean_distance_wt calculates weighted shortest path
lengths.count_interlobar is replaced by
count_intermake_mediate_brainGraph is replaced by the
make_brainGraph S3 method.plot_brainGraph is replaced by the plot S3
method for brainGraph objects.2019-10-20
mediation package no longer exports
summary.mediate, so it has to be removed from
brainGraph
mediation to Suggests, as well2019-06-29
import_scn so the Study.ID column
is always read as characterbrainGraph_init2018-12-15
import_scn replaces brainGraph_init, with
a few changes in behavior:
${parcellation}_${hemi}_${modality}.csv in the
datadir
${parcellation} could be aparc, for
example${modality} could be thicknessscgm,
there should be a asegstats.csv fileaop and loo now return S3
objects, with class name IC
summary and plot
methodsexclude argument to get.resid is now
exclude.cov to highlight that it is for specifying
covariates to exclude from the GLM2018-12-07
partition, changing method to
part.methodrobustness so it doesn’t throw an
error2018-09-04
count_homologous that affected a subset of
atlases
count_inter replaces count_interlobar; the
new function calculates inter- and intra-group edge counts, where a
group of vertices can be a lobe, hemisphere,
network (for the dosenbach160 atlas), or
class (for the destrieux atlases)
rich_core now calculates the rich core for weighted
networks
robustness now returns a data.table containing much
more information (in addition to the max. connected component ratio)
type='edge', the function is about 2-3x faster
than previous versionsplot.mtpc: the stats displayed in the caption have been
“transposed”, such that S.crit and A.crit are
in the top row2018-09-01
NBS (introduced by
v2.0.0) which only occurred if
alternative='less' when calculating the minimum statistic
of permuted networkssymm_mean, that more quickly
symmetrizes a matrix about the diagonal by assigning
mean(c(A[i, j], A[j, i])) to the off-diagonal elementspmin and pmax for symmetrizing
matrices based on the off-diagonal minimum and maximum,
respectivelysim.rand.graph.clust is about 2x faster due to
improvement in the choose.edges helper functioncentr_lev and edge_asymmetry are also
faster2018-07-21
hubness: new function for determining which vertices
are hubsset_brainGraph_attr
clust.method lets the user choose which
clustering (community detection) method to use.
louvain algorithm.spinglass, but the graph is unconnected,
then louvain is used instead.walktrap or spinglass, the
walktrap method is used.num.hubs using the new
hubness function, and calculates separate values for
weighted and unweighted networks2018-07-06
rich_club_norm that would throw an error
if certain graph attributes weren’t presentrich_club_all - new function that is a wrapper for
rich_club_coeff, applying over all possible degree
values2018-06-25
plot.brainGraph, which occurred
when choosing plane='sagittal'2018-06-22
F contrastmake_nbs_brainGraph which did not
properly assign the p.nbs attribute to all verticesNBS output object,
p.mat and T.mat, are now 3-dimensional arrays
(with extent equal to the # of contrasts) instead of lists of
matrices2018-06-20
brainGraph_permute that I didn’t catch
before2018-06-20
brainGraph_boot and corr.matrix:
E.global.wt before; now it
transforms edge weightsxfm.typecorr.matrix (added
rand=TRUE)corr.matrix for
this purposemtpc
alt='less';
fixedplot method also now gives correct values when
alt='less'brainGraph_GLM now returns the correct
null.thresh when alt != 'greater'plot.brainGraph: fixed bug that occurred when
plane='sagittal' and a hemi value was not
suppliedplot_rich_norm: didn’t plot values for all degrees
present in the networks under certain scenariosset_brainGraph_attr now calculates a graph-level
Lp.wt, which equals:Lpv.wt <- distances(g)
Lpv.wt[is.infinite(Lpv.wt)] <- NA
g$Lp.wt <- mean(Lpv.wt[upper.tri(Lpv.wt)], na.rm=T)
plot_rich_norm: new argument smooth lets
you plot with a smoother in the case of single-subject data, as opposed
to the previous default of a line plot for all subjectsStudy.ID column to be numeric;
they will convert it to class characterStudy.ID is not present in the datasummary.mtpc method now also prints the value of
clust.size2018-05-28
RGtk2 and cairoDevice to
Suggests (from Depends) to allow installation on
headless servers
@michaelhallquist for the pull request!boot_global, permute.group, and
plot_group_means are no longer accessible (deprecated since
v2.0.0)2018-05-03 (mostly changes to structural covariance network functionality)
mtpc that was introduced in
v2.0.1brainGraph_GLM_design has a new argument
factorize which specifies whether or not to convert all
character columns (excluding Study.ID) to factor variables. The
default is TRUE. Previously, character columns were
ignored.get.resid
method
argumentplot method now returns a list of
ggplot objects, and is similar to the plot methods
for bg_GLM and mtpccorr.matrix
resids argument must be the output of
get.resid (not a data.table as before)get.resid);
you no longer need to loop (or lapply) across groupswhat
argumentexclusions argument was renamed to
exclude.reg to highlight that you should specify region
names to be excluded (if any)type argument (previously, this
behavior was “hidden”)brainGraph_init: the modality argument now
will accept any character string; the default is still
thickness. The files with the string you supply still must be
present on your system.corr.matrix expecting different input, the
following functions also require, for their resids
argument, the output of get.resid (instead of a
data.table):
aopbrainGraph_bootbrainGraph_permuteloo2018-04-28
gateway_coeff: no longer throws an error for very
sparse graphs; instead, it returns a vector with NaN values
for unconnected verticesmake_mediate_brainGraph: did not return correct values
(for the treatment condition) when INT=TRUE (it recycled
the values for the control condition)make_intersection_brainGraph
subgraph
conditionsubgraph conditionNBS:
alt='greater'summary method contained
an errorsummary methods now provide a DT.sum
element in the returned list; previously it was inconsistent2018-04-26
mtpc, the stats table that is returned previously
was not always uniquemtpc did not return a list with a named element
clust.size (it was unnamed)plot.mtpc, if the user selected a contrast other
than the first, it would not plot the correct null statistics (green
dots)2018-02-23
Release on CRAN; bugfix release.
create_mats in which the ordering (along
the 3rd dimension) of the arrays in A.norm.sub did not
match the ordering of the input matrix files (and therefore the ordering
along the 3rd dimension of the arrays A and
A.norm).
groups <- c('Control', 'Patient'), and the matrix files
are separated on the filesystem by group, there is no change in
behavior.threshold.by='consistency'
or threshold.by='consensus' (the default option).2018-02-07
mtpc when creating the MTPC statistics
data.table2018-02-05
2nd major release; 6th CRAN release. (The previous CRAN release was at v1.0.0)
For other updates and bug fixes, see the minor release notes below.
brainGraph_mediate.plot (except
NBS) and summary methods. The classes and
corresponding “creation functions” are:| Class | Creation func. | Description |
|---|---|---|
| brainGraph | make_brainGraph | Any graph with certain attributes |
| bg_GLM | brainGraph_GLM | Results of GLM analysis |
| NBS | NBS | Results of NBS analysis |
| mtpc | mtpc | Results of MTPC analysis |
| brainGraph_GLM | make_glm_brainGraph | Graphs from GLM analysis |
| brainGraph_NBS | make_nbs_brainGraph | Graphs from NBS analysis |
| brainGraph_mtpc | make_glm_brainGraph | Graphs from MTPC analysis |
| brainGraph_mediate | make_mediate_brainGraph | Graphs from mediation analysis |
| brainGraph_boot | brainGraph_boot | Results of bootstrap analysis |
| brainGraph_permute | brainGraph_permute | Results of permutation tests |
| brainGraph_resids | get.resid | Residuals for covariance networks |
brainGraph_GLM, mtpc, NBS, and
get.resid.
con.type, for this
purpose.con.vec has been
replaced by con.mat.2 x 2 x 2) are
now allowed for GLM-based analyses.plot.bg_GLM method to the output of
brainGraph_GLM.plot.mtpc method for mtpc results.aop has a new argument control.value
allowing you to specify the control group; all comparisons will be to
that group.
long, which will not return all of the permutation results
if long=FALSE.boot_global was renamed to
brainGraph_boot.check.resid was removed; you now just call the
plot method to outputs of get.resid.permute.group:
brainGraph_permute.permSet was renamed to
perms.auc lets you explicitly define whether or
not you want statistics for the area under the curve
(AUC).plot_boot was removed; you now just call the
plot method to outputs of
brainGraph_boot.plot_brainGraph_mni has been removed; this
functionality can be changed by the mni argument to
plot.brainGraph (i.e., the plot method for objects
of class brainGraph)plot_group_means was renamed to
plot_volumetric, as it works specifically for structural
covariance networks.plot_perm_diffs was removed; you now just call the
plot method to outputs of
brainGraph_permute.NBS now automatically symmetrizes the input matrices.
This is partly for speed and partly because igraph
symmetrizes the matrices anyway.
symm.by (which is the
same as that for create_mats) for this purpose.corr.matrix:
get.resid.densities (or
thresholds),r.thresh).get.resid now allows for any design matrix for getting
LM residuals (similar to brainGraph_GLM).
data.table of covariates.brainGraph_GLM_design for
creating the correct design matrix.mtpc accepts 2 new arguments (in addition to explicitly
naming required arguments that pass on to brainGraph_GLM):
clust.size lets you change the “cluster size”, the
number of consecutive thresholds needed to deem a result significant
(default: 3)res.glm lets you input the res.glm list
element from a previous mtpc run. This is only useful if
you would like to compare results with different values for
clust.size.permute.group (see above section for changes)rich_club_norm now returns a data.table,
which simplifies working with the data (and plotting).set_brainGraph_attr: multiple (explicit) arguments were
removed; these are now passed on to make_brainGraph and can
still be specified in the function call.ggrepel package for any
ggplot objects with text labels.2017-09-14
brainGraph_init: fixed bug regarding the use of a
custom atlasg to g.list if the
function requires a list object).brainGraph_init:
custom.atlas allows you to use an atlas
that is not in the package (you must also specify
atlas="custom").data.table, and have columns
name, x.mni, y.mni, z.mni,
lobe, hemi (at a minimum).permute.group: can now calculate
ev.cent2017-08-31
boot_global: fixed bug in modularity
calculationboot_global:
.progress=FALSE)measuremeasure
(strength, mod.wt, E.global.wt)conf argument (default: 0.95)set_brainGraph_attr:
xfm.type, which allows you to choose how
edge weights should be transformed for calculating distance-based
metrics.1-w (subtract weights from 1); and
-log(w) (take the negative natural logarithm of
weights).symmetrize_array: a convenience function that applies
symmetrize_mats along the third dimension of an arrayxfm.weights: utility function to transform edge weights
(necessary when calculating distance-based metrics).graph_attr_dt and vertex_attr_dt will now
include weighting, if presentset_brainGraph_attr has 2 new arguments:
weighting will create a graph-level attribute
indicating how the edges are weighted (e.g., ‘fa’ for FA-weighted
tractography networks)threshold will create a graph-level attribute
indicating the (numeric) threshold used to create the network (if
applicable)2017-06-10
mtpc: fixed a bug that would incorrectly calculate
A.critapply_thresholds: threshold an additional set of
matrices (e.g., FA-weighted matrices in DTI tractography) based on a set
of matrices that have already been thresholded (e.g.,
streamline-weighted matrices in DTI tractography)analysis_random_graphs: no longer requires a
covars argument2017-04-30
create_mats
threshold.by='density'. Previously,
it would keep the top X% for each subjectcreate_mats
threshold.by='consensus' is the name of the new
default, as this is what is called “consensus-based” thresholding in the
literature.threshold.by='consistency' is a new option, for
performing consistency-based thresholding. See Roberts et al.,
2017.set_brainGraph_attr no longer calculates the graph’s
clique number, which takes exceedingly long in denser and/or
larger graphs (e.g., craddock200)2017-04-29
plot_brainGraph: now returns NA (instead
of throwing an error) if the specified subgraph expression
results in a network with 0 vertices.edge_asymmetry fixed bug when the input graph had only
one contralateral connection (usually only encountered in the GUI with
neighborhood plots)create_mats: you can specify
threshold.by='mean', which will threshold the matrices such
that a connection will be kept if
mean(A_ij) + 2*sd(A_ij) > mat.thresh, for each of
mat.thresh.make_empty_brainGraph: this is not a new function, but
rather was not exported in previous versionss_core: calculate the s-core membership of a
graph’s vertices (Eidsaa & Almaas, 2013)
s.core to the graph
through set_brainGraph_attr.coreness to k.core to distinguish these
metrics.2017-04-22
plot_brainGraph_gui had multiple issues and a few
features have been changed:
Ctrl and
clicking, or by holding Shift and moving the arrow
keysgateway_coeff returned an error if the number of
communities equals 1; this has been fixedcentr_betw_comm: calculate vertex communicability
betweenness centrality (Estrada et al., 2009)communicability: calculate network
communicability (Estrada & Hatano, 2008)mtpc: the multi-threshold permutation correction
(MTPC) method for statistical inference of either vertex- or
graph-level measures (Drakesmith et al., 2015)symmetrize_mats: symmetrize a connectivity matrix by
either the maximum, minimum, or average of
the off-diagonal elements. You may select one of these as an argument to
create_mats.brainGraph_GLM has 2 new function arguments:
level allows you to perform inference for graph- or
vertex-level measuresperms lets you specify the permutation set
explicitlycreate_mats: All A.norm.sub matrices will
be symmetrized, regardless of the value of threshold.by
(previously they were only symmetrized if using
threshold.by='density').
igraph.get.resid: no longer requires a covars
argument, as it was redundantsim.rand.graph.par: the argument clustering is
no longer TRUE by default2017-04-10
First major release; Fifth CRAN release
plot_perm_diffs previously didn’t work with a low
number of permutations, but now will work with any numbersim.rand.graph.par previously didn’t work with graphs
lacking a degree vertex attributeplot_brainGraph_GUI when plotting in
the sagittal view for neighborhood graphspermute.group.auc has been removed, and now
permute.group accepts multiple densities and returns the
same results. It can still take a single density for the old
behaviorlobe and network vertex attributes are
now character vectorsNBS now handles more complex designs and contrasts
through brainGraph_GLM_design and
brainGraph_GLM_fit. The function arguments are different
from previous versionsSPM has been removed and is replaced by
brainGraph_GLMcraddock200 (with coordinates from
DPABI/DPARSF)brainGraph_GLM: replaces SPM and allows
for more complex designs and contrastsbrainGraph_GLM_design: function that creates a design
matrix from a data.tablebrainGraph_GLM_fit: function that calculates the
statistics from a design matrix and response vectorcreate_mats: replaces dti_create_mats and
adds functionality for resting-state fMRI data; also can create matrices
that will have a specific graph densitygateway_coeff: calculate the gateway
coefficient (Vargas & Wahl, 2014); graphs will have vertex
attributes GC or GC.wt (if weighted
graph)plot_brainGraph_multi: function to write a PNG file of
3-panel brain graphs (see User Guide for example)efficiency replaces graph.efficiency; the
old function name is still accessible (but may be removed
eventually)set_brainGraph_attr replaces
set.brainGraph.attributes; the old function name is still
accessible (but may be removed eventually)part_coeff replaces part.coeffrich. functions have been renamed. The
period/point/dot in each of those functions is replaced by the
underscore. So, rich.club.norm is now
rich_club_norm, etc.set_vertex_color and set_edge_color
replace color.vertices and color.edges (these
functions are not exported, in any case)contract_brainGraph replaces
graph.contract.brainmake_ego_brainGraph replaces
graph_neighborhood_multiple (so it is a similar name to
igraph’s function make_ego_graph)write_brainnet replaces
write.brainnet2016-10-10
Fourth CRAN release
sim.rand.graph.clust previously returned a list; now it
correctly returns an igraph graph objectaop and loo: regional contributions were
calculated incorrectly (without an absolute value)rich.club.norm: changed the p-value calculation again;
this shouldn’t affect many results, particularly if N=1,000 (random
graphs)NBS:
t.stat edge attribute was, under certain
situations, incorrectly assigning the values; this has been fixed in the
latest versionSPM:
NA valuesvec.transform: fixed bug which occurred when the input
vector is the same number repeated (i.e., when
range(x) = 0)dti_create_mats: new function argument
algo can be used to specify either ‘probabilistic’ or
‘deterministic’. In the case of the latter, when dividing streamline
count by ROI size, you can supply absolute streamline counts with the
mat.thresh argument..parallel to
use.parallel; also, added it as an argument to
set.brainGraph.attributes to control all of the functions
that it calls; also added the argument to part.coeff and
within_module_deg_z_scoreaal2.94, aal2.120, and
dosenbach160plot_brainGraph: can now specify the orientation plane,
hemisphere to plot, showing a legend, and a character string of logical
expressions for plotting subgraphs (previously was in
plot_brainGraph_list)auc_diff: calculates the area-under-the-curve across
densities for two groupscor.diff.test: calculates the significance of the
difference between correlation coefficientspermute.group.auc: does permutation testing across all
densities, and returns the permutation distributions for the difference
in AUC between two groupsrich.club.attrs: give a graph attributes based on
rich-club analysisx, y, and z
columns from the atlas data files; now only the MNI coordinates are
used. This should simplify adding a personal atlas to use with the
packagename.full to some of the atlas data
filesNBS:
p, the p-value for that specific
connectionp.init value for record-keepingbrainGraph_init: can now provide a covars
data table if you want to subset certain variables yourself, or if the
file is named differently from covars.csvplot_brainGraph: can now manually specify a
subtitle;plot_brainGraph_gui:
plot_corr_mat: color cells based on weighted community
or networkplot_global:
xvar to be either “density” or “threshold”;
if the latter, the x-axis is reversedStudy.ID column, the ggplot2
function stat_smooth is used and the statistic is based on
a generalized additive modelplot_perm_diffs: added argument auc for
using the area-under-the-curve across densitiesplot_rich_norm:
fdr to choose whether or not to use
FDR-adjusted p-valuesplot_vertex_measures: can facet by different variables
(e.g., lobe, community, network, etc.)set.brainGraph.attributes:
strength, which is the mean of vertex
strength (weighted networks)write.brainnet:
edge.wt function argument2016-04-22
Third CRAN release
rich.club.norm had a bug in calculating the p-values.
If you have already gone through the process of creating random graphs
and the object phi.norm, you can fix with the following
code: (add another loop if you have single-subject graphs, e.g. DTI
data)for (i in seq_along(groups)) {
for (j in seq_along(densities)) {
max.deg <- max(V(g[[i]][[j]])$degree)
phi.norm[[i]][[j]]$p <- sapply(seq_len(max.deg), function(x)
sum(phi.norm[[i]][[j]]$phi.rand[, x] >= phi.norm[[i]][[j]]$phi.orig[x]) / N)
}
}
where N is the number of random graphs generated. *
dti_create_mats: there was a bug when sub.thresh
equals 0; it would take matrix entries, even if they were below the
mat.thresh values. This has been fixed. Argument checking has
also been added.
RcppEigen for fast linear
model calculations; resulted in major speed improvementspermute for the
NBS functiongroup.graph.diffs:
fastLmPure from
RcppEigen for speed/efficiencydestrieux.scgm atlasSPM: new function that replaces and improves upon both
group.graph.diffs and permute.vertexNBS: implements the network-based statisticanalysis_random_graphs: perform all the steps for
getting small-world parameters and normalized
rich-club coefficients and p-valuesplot_global: create a line plot across all densities of
global graph measures in the same figurevertex_spatial_dist: calculates the mean edge distance
for all edges of a given vertexdti_create_mats: changed a few argumentsedge_spatial_dist: re-named from
spatial.distgroup.graph.diffs: returns a graph w/ spatial coord’s
for plottingplot_brainGraph_list:
hemi == "R" will keep only right hemisphere vertices;
includes complex logical expressions (i.e., with multiple ‘&’ and
‘|’ conditions)Lp (average path length for each
vertex)plot_brainGraph_gui:
plot_rich_norm:
facet.by to group the plots by either
“density” (default) or “threshold” (for multi-subject, e.g. DTI
data)set.brainGraph.attributes: New calculations for
weighted graphs:
2015-12-24
Second CRAN release
aop and loo calculate measures of
individual contribution (see Reference within the function
help)
ade4plot_boot: new function based on the removed plotting
code from boot_globalplot_rich_norm: function to plot normalized rich club
coefficient curvesboot_global:
corr.matrixbrainGraph_init:
corr.matrix:
count_interlobar no longer takes
atlas.dt as an argument
dti_create_mats now accepts argument P
for “number of samples”
edge_asymmetry now works on Windows (changed from
mclapply to foreach)
get.resid:
use.mean=FALSE but covars
has columns mean.lh and/or mean.rh; fixed minor bug w/
RH residual calculationuse.mean=TRUE (syntax error for RH
vertices)graph.efficiency: now works on Windows (changed from
mclapply to foreach)
part.coeff: has a workaround to work on
Windows
permute.group:
corr.matrixatlas.dt as an argumentvertex_attr_dt is now essentially a wrapper for
igraph’s function as_data_frame
Exported plot_perm_diffs
Added argument checking for most functions
2015-12-08
Initial CRAN release