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_score
RGtk2
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_attrs
graph_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 brainnetome
sim.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_inter
make_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 character
brainGraph_init
2018-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 thickness
scgm
, 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.method
robustness
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 contrast
make_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.type
corr.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.size
2018-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.1
brainGraph_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 mtpc
corr.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):
aop
brainGraph_boot
brainGraph_permute
loo
2018-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.table
2018-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.cent
2017-08-31
boot_global
: fixed bug in modularity calculationboot_global
:
.progress=FALSE
)measure
measure
(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.crit
apply_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_GLM
craddock200
(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.table
brainGraph_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.coeff
rich.
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.brain
make_ego_brainGraph
replaces graph_neighborhood_multiple
(so it is a similar name to igraph’s function make_ego_graph
)write_brainnet
replaces write.brainnet
2016-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_score
aal2.94
, aal2.120
, and dosenbach160
plot_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.csv
plot_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.vertex
NBS
: 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.dist
group.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)
ade4
plot_boot
: new function based on the removed plotting code from boot_global
plot_rich_norm
: function to plot normalized rich club coefficient curvesboot_global
:
corr.matrix
brainGraph_init
:
corr.matrix
:
count_interlobar
no longer takes atlas.dt
as an argumentdti_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 Windowspermute.group
:
corr.matrix
atlas.dt
as an argumentvertex_attr_dt
is now essentially a wrapper for igraph
’s function as_data_frame
plot_perm_diffs
Added argument checking for most functions
2015-12-08
Initial CRAN release