<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Archiving and Interchange DTD v2.3 20070202//EN" "archivearticle.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="methods-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neuroinform.</journal-id>
<journal-title>Frontiers in Neuroinformatics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neuroinform.</abbrev-journal-title>
<issn pub-type="epub">1662-5196</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fninf.2016.00050</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Methods</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Memory-Efficient Analysis of Dense Functional Connectomes</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Loewe</surname> <given-names>Kristian</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/367139/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Donohue</surname> <given-names>Sarah E.</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/24590/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Schoenfeld</surname> <given-names>Mircea A.</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<xref ref-type="aff" rid="aff5"><sup>5</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2860/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Kruse</surname> <given-names>Rudolf</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/392685/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Borgelt</surname> <given-names>Christian</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/76639/overview"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Department of Neurology, Otto-von-Guericke University</institution> <country>Magdeburg, Germany</country></aff>
<aff id="aff2"><sup>2</sup><institution>Department of Computer Science, Otto-von-Guericke University</institution> <country>Magdeburg, Germany</country></aff>
<aff id="aff3"><sup>3</sup><institution>Leibniz Institute for Neurobiology</institution> <country>Magdeburg, Germany</country></aff>
<aff id="aff4"><sup>4</sup><institution>Center for Cognitive Neuroscience, Duke University</institution> <country>Durham, NC, USA</country></aff>
<aff id="aff5"><sup>5</sup><institution>Kliniken Schmieder</institution> <country>Allensbach, Germany</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Pedro Antonio Valdes-Sosa, Joint China Cuba Lab for Frontiers Research in Translational Neurotechnology, Cuba</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Xi-Nian Zuo, Institute of Psychology (CAS), China; Gabriele Lohmann, Max Planck Institute for Human Cognitive and Brain Sciences, Germany</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Kristian Loewe <email>kl&#x00040;kristianloewe.com</email></p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>29</day>
<month>11</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="collection">
<year>2016</year>
</pub-date>
<volume>10</volume>
<elocation-id>50</elocation-id>
<history>
<date date-type="received">
<day>12</day>
<month>08</month>
<year>2016</year>
</date>
<date date-type="accepted">
<day>31</day>
<month>10</month>
<year>2016</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2016 Loewe, Donohue, Schoenfeld, Kruse and Borgelt.</copyright-statement>
<copyright-year>2016</copyright-year>
<copyright-holder>Loewe, Donohue, Schoenfeld, Kruse and Borgelt</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract><p>The functioning of the human brain relies on the interplay and integration of numerous individual units within a complex network. To identify network configurations characteristic of specific cognitive tasks or mental illnesses, functional connectomes can be constructed based on the assessment of synchronous fMRI activity at separate brain sites, and then analyzed using graph-theoretical concepts. In most previous studies, relatively coarse parcellations of the brain were used to define regions as graphical nodes. Such parcellated connectomes are highly dependent on parcellation quality because regional and functional boundaries need to be relatively consistent for the results to be interpretable. In contrast, dense connectomes are not subject to this limitation, since the parcellation inherent to the data is used to define graphical nodes, also allowing for a more detailed spatial mapping of connectivity patterns. However, dense connectomes are associated with considerable computational demands in terms of both time and memory requirements. The memory required to explicitly store dense connectomes in main memory can render their analysis infeasible, especially when considering high-resolution data or analyses across multiple subjects or conditions. Here, we present an object-based matrix representation that achieves a very low memory footprint by computing matrix elements on demand instead of explicitly storing them. In doing so, memory required for a dense connectome is reduced to the amount needed to store the underlying time series data. Based on theoretical considerations and benchmarks, different matrix object implementations and additional programs (based on available Matlab functions and Matlab-based third-party software) are compared with regard to their computational efficiency. The matrix implementation based on on-demand computations has very low memory requirements, thus enabling analyses that would be otherwise infeasible to conduct due to insufficient memory. An open source software package containing the created programs is available for download.</p></abstract>
<kwd-group><kwd>functional connectivity</kwd>
<kwd>dense connectome analysis</kwd>
<kwd>resting-state fMRI</kwd>
<kwd>big data</kwd>
<kwd>graph theoretical analysis</kwd></kwd-group>
<contract-sponsor id="cn001">Deutsche Forschungsgemeinschaft<named-content content-type="fundref-id">10.13039/501100001659</named-content></contract-sponsor>
<counts>
<fig-count count="3"/>
<table-count count="1"/>
<equation-count count="5"/>
<ref-count count="67"/>
<page-count count="12"/>
<word-count count="8919"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>Graph-based analysis of dense connectomes allows for spatially precise mapping of fMRI-based functional connectivity patterns but is associated with considerable computational demands (van den Heuvel et al., <xref ref-type="bibr" rid="B56">2008</xref>; Hayasaka and Laurienti, <xref ref-type="bibr" rid="B18">2010</xref>; de Reus and Van den Heuvel, <xref ref-type="bibr" rid="B9">2013</xref>; Fornito et al., <xref ref-type="bibr" rid="B14">2013</xref>). As a result, some previous studies have been conducted at reduced spatial resolution (Buckner et al., <xref ref-type="bibr" rid="B8">2009</xref>; Valencia et al., <xref ref-type="bibr" rid="B55">2009</xref>; Zuo et al., <xref ref-type="bibr" rid="B66">2012</xref>). However, most previous studies have not used dense connectomes at all, neither at the full nor at a reduced resolution. Instead, relatively coarse parcellations (or multiple regions of interests) were used to define network nodes (e.g., Salvador et al., <xref ref-type="bibr" rid="B39">2005</xref>; Achard et al., <xref ref-type="bibr" rid="B1">2006</xref>; Supekar et al., <xref ref-type="bibr" rid="B50">2008</xref>; Fair et al., <xref ref-type="bibr" rid="B12">2009</xref>; He et al., <xref ref-type="bibr" rid="B19">2009</xref>; Supekar et al., <xref ref-type="bibr" rid="B51">2009</xref>; Dosenbach et al., <xref ref-type="bibr" rid="B11">2010</xref>; Fornito et al., <xref ref-type="bibr" rid="B13">2011</xref>; Schoonheim et al., <xref ref-type="bibr" rid="B42">2012</xref>; Agosta et al., <xref ref-type="bibr" rid="B2">2013</xref>; Brier et al., <xref ref-type="bibr" rid="B7">2014</xref>; Suo et al., <xref ref-type="bibr" rid="B49">2015</xref>; Rocca et al., <xref ref-type="bibr" rid="B38">2016</xref>). While the analysis of such parcellated connectomes offers many advantages and led to impactful findings, their spatial sensitivity is rather limited, as the use of region-level nodes typically involves the aggregation of fMRI time series from the incorporated voxels, at the cost of more detailed spatial information (Wang et al., <xref ref-type="bibr" rid="B60">2010</xref>; Scheinost et al., <xref ref-type="bibr" rid="B41">2012</xref>; Stanley et al., <xref ref-type="bibr" rid="B48">2013</xref>). Such analyes are thus highly dependent on parcellation quality because regional and functional boundaries need to be relatively consistent to obtain meaningful results (Smith et al., <xref ref-type="bibr" rid="B43">2011</xref>, <xref ref-type="bibr" rid="B45">2013</xref>; Zuo and Xing, <xref ref-type="bibr" rid="B67">2014</xref>; Jiang et al., <xref ref-type="bibr" rid="B22">2015</xref>; Jiang and Zuo, <xref ref-type="bibr" rid="B23">2016</xref>). In this regard, the suitability of a given parcellation also depends on the application because functional boundaries may vary between individuals (Biswal et al., <xref ref-type="bibr" rid="B6">2010</xref>; Kelly et al., <xref ref-type="bibr" rid="B24">2012</xref>), in the context of different tasks (Lohmann et al., <xref ref-type="bibr" rid="B28">2016</xref>; Mi&#x00161;i&#x00107; and Sporns, <xref ref-type="bibr" rid="B34">2016</xref>), or in association with dysfunction and disease (Matthews and Hampshire, <xref ref-type="bibr" rid="B32">2016</xref>).</p>
<p>Dense connectomes, in contrast to parcellated connectomes, are less prone to these problems because the parcellation inherent to the data is used to define graphical nodes, so that the mixing of multiple, potentially dissimilar signals is avoided. To make the analysis of dense connectomes more computationally efficient, some efforts have recently been directed toward acceleration, e.g., through parallel computing (based on multi-core CPUs (Tomasi and Volkow, <xref ref-type="bibr" rid="B53">2011</xref>; Loewe et al., <xref ref-type="bibr" rid="B26">2014</xref>), GPUs (Wang et al., <xref ref-type="bibr" rid="B62">2013</xref>), Intel&#x000AE; Xeon Phi&#x02122; coprocessors (Wang et al., <xref ref-type="bibr" rid="B61">2015</xref>), specialized vector hardware (Minati et al., <xref ref-type="bibr" rid="B33">2014</xref>), or CPU instruction set extensions (Loewe et al., <xref ref-type="bibr" rid="B26">2014</xref>)), or alternative measures of internodal association (Loewe et al., <xref ref-type="bibr" rid="B26">2014</xref>; Minati et al., <xref ref-type="bibr" rid="B33">2014</xref>).</p>
<p>By focusing on time efficiency, however, memory- and storage-related aspects are sometimes overlooked. With high-resolution data, a single connectivity matrix can easily surpass the available main memory of most computers. For example, at an isometric resolution of 2 mm, about 200,000 gray matter voxels exist in MNI template space. Using 4 bytes per element, the corresponding voxel-level connectivity matrix, or dense connectome (Van Essen and Ugurbil, <xref ref-type="bibr" rid="B58">2012</xref>), would thus require about 149 GiB. Of course, there are some straightforward ways to reduce memory usage. As a side effect of the recently introduced grayordinate space, all gray matter can be represented by about 100,000 grayordinates because cortical data are modeled in surface space (Glasser et al., <xref ref-type="bibr" rid="B17">2013</xref>), so that a grayordinate-based dense connectome would require only about 37.3 GiB. Due to matrix symmetry, it would further be sufficient to store only the upper or lower triangular part of a functional connectivity matrix, reducing memory occupancy by about 50%. Although the memory required to explicitly store connectivity matrices can be reduced in this way, they still remain too large for many applications, especially when considering high-resolution data or analyses across multiple subjects or conditions.</p>
<p>Here, we propose an object-based matrix representation that achieves a very low memory footprint by computing matrix elements <italic>on demand</italic> instead of explicitly storing them. In doing so, the memory required for a dense connectome reduces to the amount needed to store the underlying time series data. Even for data that exhibit a very high temporal resolution, this approach allows for immense reductions in memory requirements.</p>
</sec>
<sec sec-type="materials and methods" id="s2">
<title>2. Materials and methods</title>
<p>In the literature on functional connectivity, the terms matrix, graph, and connectome are often used somewhat interchangeably so that the exact meaning is often dependent on the context. Typically, based on a set of separate brain sites defined as nodes, pairwise statistical associations between the nodes&#x00027; corresponding time series are used to derive a functional connectivity matrix. From a graph-theoretical perspective, this matrix can also be regarded as an undirected weighted graph or network, which is often binarized based on a connectivity threshold. Formally, an undirected binary graph <italic>G</italic><sub><italic>B</italic></sub> consists of two sets, a set of nodes and a set of pairwise internodal connections, or edges. <italic>G</italic><sub><italic>B</italic></sub> can be represented as an adjacency matrix <bold>B</bold>, where <italic>b</italic><sub><italic>ij</italic></sub> &#x0003D; 1 indicates that an edge exists between the two nodes <italic>i</italic> and <italic>j</italic>. The term connectome, originally defined in terms of structural brain connectivity (Sporns et al., <xref ref-type="bibr" rid="B47">2005</xref>; Sporns, <xref ref-type="bibr" rid="B46">2011</xref>), is now commonly used in a more ambiguous fashion often referring to brain connectivity graphs or networks of any kind (e.g., binary or weighted graphs, derived from structural, functional, or effective connectivity) and on multiple scales (e.g., microscopic, macroscopic, or at the systems level).</p>
<p>In the context of MRI, one can further distinguish between dense, i.e., voxel- or grayordinate-based, and parcellated connectomes (see e.g., Akil et al., <xref ref-type="bibr" rid="B3">2011</xref>; Marcus et al., <xref ref-type="bibr" rid="B29">2011</xref>; Glasser et al., <xref ref-type="bibr" rid="B17">2013</xref>). In the latter, nodes are not individual voxels or grayordinates, but rather parcels, each of which typically comprises many voxels or grayordinates. Note that in this context dense connectomes could also be viewed as parcellated connectomes with atomic parcels. Note also that the use of the term &#x0201C;dense&#x0201D; here is distinct from its typical use to denote &#x0201C;dense&#x0201D; matrices as opposed to &#x0201C;sparse&#x0201D; matrices, even though a dense connectome can be represented by a dense connectivity matrix.</p>
<p>In this article, we describe our work with dense connectomes in mind. Of course, the proposed methods could be applied to parcellated connectomes as well, but, due to a much smaller number of nodes, such analyses are typically less challenging regarding computational efficiency.</p>
<p>The remainder of this section consists of three parts. We begin with a discussion of possible implementation variants for an object-based matrix representation, focusing on memory requirements and computation time. Next, programs for an example application (degree computation starting out from nodal time series data) based on the proposed matrix object implementation variants are described. The last part deals with the comparison of these programs with each other and with four additional programs based on external tools to assess the computational performance of the different implementation variants with respect to both time and memory efficiency.</p>
<sec>
<title>2.1. Matrix representation</title>
<p>Essentially, to design an object-based representation of a functional connectivity matrix (dense connectome), only three methods are required for interfacing with the object: a constructor (to create an object), an accessor (to access matrix elements), and a destructor (to free the resources acquired by the object during its lifetime when the object is destroyed). Let us consider the expected memory requirements and computation time of three storage schemes for such an object, which we will refer to as <italic>full-stored, half-stored</italic>, and <italic>on-demand</italic>.</p>
<sec>
<title>2.1.1. Memory requirements</title>
<p>In the full-stored scheme, upon object construction all pairwise internodal connectivity values are precomputed based on the nodes&#x00027; corresponding time series data and the full connectivity matrix is stored in main memory. This requires memory in the order of <italic>N</italic><sup>2</sup> &#x0002B; <italic>NT</italic>, where <italic>N</italic> is the number of nodes and <italic>T</italic> is the number of points in time for storing the full matrix and the time series data.</p>
<p>In the half-stored scheme, taking advantage of matrix symmetry, only the upper (or lower) triangular elements of the matrix are stored in order to save memory. This requires memory in the order of <italic>N</italic>(<italic>N</italic> &#x02212; 1)/2 &#x0002B; <italic>NT</italic>.</p>
<p>In the on-demand scheme, a matrix element is computed on demand, i.e., once that specific element is accessed. This requires memory in the order of <italic>NT</italic> (the amount of memory needed for the underlying time series data).</p>
<p>Note that in the full- and half-stored schemes the time series data are needed during object construction only. After that, the memory required for the time series data could be deallocated if not otherwise needed. In contrast, in the on-demand scheme, the time series data need to be kept in memory until the object is destroyed. Nevertheless, because in the considered application domain <italic>N</italic> is much greater than <italic>T</italic>, the on-demand scheme provides superior memory efficiency compared to both other schemes.</p>
</sec>
<sec>
<title>2.1.2. Computation time</title>
<p>To speed up execution, we consider (1) parallelization through concurrent computations on multiple CPU cores based on multi-threading, (2) data locality optimization (within each thread) through tiling, (3) vectorization through SIMD<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref> instruction set extensions (within each thread), (4) using the tetrachoric correlation coefficient <italic>r</italic><sub><italic>t</italic></sub> instead of Pearson&#x00027;s <italic>r</italic> to estimate functional connectivity (the latter being used by the majority of previous studies).</p>
<sec>
<title>2.1.2.1. Multi-threading</title>
<p>To benefit from parallelization by dividing the computations across multiple cores, parallelization through multi-threading (based on Pthreads) is employed in the half-stored scheme so that each of <italic>k</italic> threads computes (approximately) <italic>E</italic>/<italic>k</italic> matrix elements, where <italic>E</italic> &#x0003D; <italic>N</italic>(<italic>N</italic> &#x02212; 1)/2 is the total number of matrix elements. For the on-demand scheme, parallelization through multi-threading cannot be implemented by the object for obvious reasons. However, it can be implemented by the client or application code, i.e., the code that uses the object (at the cost of additional programming efforts).</p>
</sec>
<sec>
<title>2.1.2.2. Data locality optimization</title>
<p>To benefit from data locality, the order in which the matrix elements are computed can be determined in an attempt to minimize the number of cache misses. For the half-stored scheme, we adopted a cache-oblivious tiling (COBL) approach to achieve this (Frigo et al., <xref ref-type="bibr" rid="B16">1999</xref>; Prokop, <xref ref-type="bibr" rid="B37">1999</xref>). Implementation details can be found in Loewe et al. (<xref ref-type="bibr" rid="B26">2014</xref>). For the on-demand scheme, data locality optimization has not been attempted, since, on the part of the matrix object, information on the order of accesses is not available in advance. Note that such information is often available on the part of the application code, but inter-dependencies between application code and implementation details of the matrix object should be avoided because the object implementation could change in the future. However, we discuss a special case below (see Section 2.1.3).</p>
</sec>
<sec>
<title>2.1.2.3. Vectorization</title>
<p>An fMRI data set can be represented by a data matrix <inline-formula><mml:math id="M1"><mml:msup><mml:mrow><mml:mstyle class="text"><mml:mtext mathvariant="bold">X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, where 1 &#x02264; <italic>i</italic> &#x02264; <italic>N</italic> and 1 &#x02264; <italic>k</italic> &#x02264; <italic>T</italic>. By <italic>x<sub>i</sub></italic> &#x0003D; (<italic>x</italic><sub><italic>i</italic>1</sub>, <italic>x</italic><sub><italic>i</italic>2</sub>, &#x022EF;, <italic>x</italic><sub><italic>iT</italic></sub>), i.e., the <italic>i</italic>th row of X, we denote the time series of the <italic>i</italic>th node. Using Pearson&#x00027;s <italic>r</italic> as a connectivity measure, the sample correlation matrix is given by <inline-formula><mml:math id="M2"><mml:msup><mml:mrow><mml:mstyle class="text"><mml:mtext mathvariant="bold">R</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, where each matrix element can be computed as the mean of the products of the standard scores using</p>
<disp-formula id="E1"><mml:math id="M3"><mml:msub><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M4"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, <italic>s</italic><sub><sub><italic>x</italic></sub><sub><italic>i</italic></sub></sub>, and <italic>z<sub>i</sub></italic> (with <italic>z<sub>i</sub></italic> &#x0003D; (<italic>z</italic><sub><italic>i</italic>1</sub>, <italic>z</italic><sub><italic>i</italic>2</sub>, &#x02026;, <italic>z</italic><sub><italic>iT</italic></sub>) and <inline-formula><mml:math id="M5"><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:math></inline-formula>) are the sample mean, the corrected sample standard deviation, and the vector of standard scores corresponding to <italic>x<sub>i</sub></italic>, respectively. This equation can be rearranged to</p>
<disp-formula id="E2"><mml:math id="M6"><mml:msub><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x000B7;</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M7"><mml:msubsup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> is the unbiased sample variance of <italic>x<sub>i</sub></italic> and <inline-formula><mml:math id="M8"><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is given by <inline-formula><mml:math id="M9"><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with</p>
<disp-formula id="E3"><mml:math id="M10"><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:math></disp-formula>
<p>To compute <bold>R</bold> (formed by all pairwise correlation coefficients), we first compute <inline-formula><mml:math id="M11"><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> for every node (pre-normalization; linear complexity) before computing <inline-formula><mml:math id="M12"><mml:msub><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x000B7;</mml:mo><mml:msubsup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> for every node pair (quadratic complexity), which saves one division per pair compared to computing <italic>z<sub>i</sub></italic> and <inline-formula><mml:math id="M13"><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula>, respectively.</p>
<p>Depending on the processor&#x00027;s capabilities, AVX or SSE2 instructions are used for SIMD-based vectorization. SIMD instructions allow for data-level parallelism by carrying out the same operation on multiple data elements simultaneously, using 256-bit (AVX) or 128-bit (SSE2) wide SIMD registers. For implementation details see Loewe et al. (<xref ref-type="bibr" rid="B26">2014</xref>).</p>
</sec>
<sec>
<title>2.1.2.4. Tetrachoric correlation estimation</title>
<p>Based on two binary variables <italic>x</italic><sub><italic>b</italic></sub> and <italic>y</italic><sub><italic>b</italic></sub>, the tetrachoric correlation coefficient <italic>r</italic><sub><italic>t</italic></sub> (Pearson, <xref ref-type="bibr" rid="B36">1900</xref>) estimates the correlation of the two latent continuous-valued variables <italic>x</italic><sub><italic>c</italic></sub> and <italic>y</italic><sub><italic>c</italic></sub>, which are assumed to underlie <italic>x</italic><sub><italic>b</italic></sub> and <italic>y</italic><sub><italic>b</italic></sub>. Originally, <italic>r</italic><sub><italic>t</italic></sub> has been devised for those cases in which <italic>x</italic><sub><italic>b</italic></sub> and <italic>y</italic><sub><italic>b</italic></sub> are observable while <italic>x</italic><sub><italic>c</italic></sub> and <italic>y</italic><sub><italic>c</italic></sub> are not. As recently proposed, it can also be used as a computationally efficient, although less accurate, alternative to Pearson&#x00027;s <italic>r</italic> as a functional connectivity estimate (Loewe et al., <xref ref-type="bibr" rid="B26">2014</xref>). The use of <italic>r</italic><sub><italic>t</italic></sub> for this purpose requires data reduction in the temporal domain: each nodal time series is initially binarized based on its median (Loewe et al., <xref ref-type="bibr" rid="B25">2013</xref>, <xref ref-type="bibr" rid="B26">2014</xref>). Assuming bivariate normality, the correlation between two original (real-valued) time series can then be estimated very efficently based on the binarized time series by the tetrachoric correlation coefficient, exploiting SSE2 and the POPCNT instruction for SIMD-based vectorization for the necessary computations. If these instructions are not supported by the processor, an alternative, albeit less efficient, implementation based on a 16-bit lookup table can be used instead. For implementation details see Loewe et al. (<xref ref-type="bibr" rid="B26">2014</xref>). An additional advantage is that a binarized time series, being stored in the bits of integer variables, requires only a fraction of the memory that the original time series requires. This compression seems to render data locality optimization unnecessary for most data sets, presumably because the entire binarized time series data set can be stored in the CPU cache.</p>
<p>Note that the considerations made above for the half-stored scheme are also valid for the full-stored scheme. However, we decided to forego an actual implementation of this scheme within our framework at this point since it exhibits the highest memory requirements and a full-stored matrix representation is easily achieved based on already available software (for example, Matlab&#x00027;s <monospace>corrcoef</monospace>).</p>
</sec>
</sec>
<sec>
<title>2.1.3. Cache-based implementation</title>
<p>To accomodate situations where all matrix elements need to be traversed, but the order of traversal is essentially arbitrary, a <italic>cache-based</italic> storage scheme was additionally devised. In this scheme, upon construction, the matrix object is initialized such that a cache of user-specified size is maintained internally. While client code uses iterator functions to traverse the elements, the object internally fills its cache when necessary.</p>
<p>Since the order of traversal is determined by the object, both data locality (COBL) and multi-threading can be exploited when the cache is filled. Thus, similar to the half-stored scheme, data locality optimization and multi-threading can be implemented by the matrix object, which reduces the programmer&#x00027;s efforts when implementing applications, compared to the on-demand scheme. As mentioned above, for the on-demand scheme multi-threading has to be implemented by application code, and data locality optimization cannot be used at all, if inter-dependencies between matrix object implementation and client code are to be avoided. On the other hand, it is not possible to parallelize the traversal when using the cache-based variant, which could be a significant disadvantage in some situations.</p>
</sec>
</sec>
<sec>
<title>2.2. Application: degree centrality</title>
<p>In this section, the task of node degree computation based on nodal time series data will serve as an example application to assess the performance of the different matrix object implementations with respect to both time and memory efficiency. The node degree, or degree centrality, is a simple graph-theoretical metric aimed at investigating the importance of individual nodes in a binary graph (Nieminen, <xref ref-type="bibr" rid="B35">1974</xref>; Freeman, <xref ref-type="bibr" rid="B15">1979</xref>). It is defined for each node as the number of other nodes to which it is connected. More formally, given a binary graph <italic>G</italic><sub><italic>B</italic></sub>, the degree <italic>k</italic><sub><italic>i</italic></sub> of a node <italic>i</italic> is defined as <inline-formula><mml:math id="M14"><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mi>N</mml:mi><mml:mo>|</mml:mo></mml:mrow></mml:munderover><mml:msub><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, where <italic>i, j</italic> &#x02208; <italic>N</italic>, <italic>i</italic> &#x02260; <italic>j</italic>, and <italic>N</italic> is the set of nodes. In the neuroimaging literature, centrality measures have been used as a means to identify and analyze network hubs in the human brain (Buckner et al., <xref ref-type="bibr" rid="B8">2009</xref>; Lohmann et al., <xref ref-type="bibr" rid="B27">2010</xref>; Tomasi and Volkow, <xref ref-type="bibr" rid="B52">2010</xref>, <xref ref-type="bibr" rid="B54">2012</xref>; Wink et al., <xref ref-type="bibr" rid="B63">2012</xref>; Zuo et al., <xref ref-type="bibr" rid="B66">2012</xref>; Di Martino et al., <xref ref-type="bibr" rid="B10">2013</xref>; van den Heuvel and Sporns, <xref ref-type="bibr" rid="B57">2013</xref>; Binnewijzend et al., <xref ref-type="bibr" rid="B5">2014</xref>; Markett et al., <xref ref-type="bibr" rid="B31">2014</xref>, <xref ref-type="bibr" rid="B30">2016</xref>; Schaefer et al., <xref ref-type="bibr" rid="B40">2014</xref>).</p>
<sec>
<title>2.2.1. Programs</title>
<p>Combining the storage schemes <italic>half-stored, on-demand</italic>, and <italic>cache-based</italic> with the two functional connectivity estimates, Pearson&#x00027;s <italic>r</italic> and tetrachoric correlation coefficient <italic>r</italic><sub><italic>t</italic></sub>, we arrive at six matrix object configurations. We will denote these by <monospace>FCMAT/</monospace><italic>s</italic><monospace>/</monospace><inline-formula><mml:math id="M15"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C1;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula>, where <italic>s</italic> indicates the storage scheme with <italic>s</italic> &#x02208; {<monospace>half-stored, on-demand, cache-based</monospace>}, and <inline-formula><mml:math id="M16"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C1;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula> indicates the functional connectivity estimate<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> with <inline-formula><mml:math id="M17"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C1;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mi>r</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>For typical fMRI data sets, data locality optimization turned out not to be beneficial if <italic>r</italic><sub><italic>t</italic></sub> is used as the functional connectivity estimate. Only for a very large number of points in time is a benefit observed. Presumably, this is because the binarized time series, due to efficient bitwise storage, take up far less memory than the original time series, thus enabling efficient CPU cache usage without additional optimizations. This is why the cache-based variant is not combined with <italic>r</italic><sub><italic>t</italic></sub> here. For the same reasons, data locality optimization is used for <monospace>FCMAT/half-stored/</monospace><italic>r</italic>, but not for <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub>.</p>
<p>The matrix object variants were implemented in C. The programs for degree computation based on the matrix object were also written in C, but Matlab integration is provided via MEX. A corresponding open source software package is available for download<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref>. In addition, four programs for degree computation based on Matlab functions or Matlab-based third-party software have been created. These programs use <monospace>corrcoef</monospace> (Matlab built-in), <monospace>corr</monospace> (Matlab Statistics Toolbox), <monospace>IPN_fastCorr</monospace>, and <monospace>IPN_calLCAM</monospace> (from the Matlab toolbox &#x0201C;IPN_voxelGraph&#x0201D; by Xi-Nian Zuo available at Matlab File Exchange<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref>) for matrix computation, respectively. Note that &#x0201C;IPN_voxelGraph&#x0201D; is now part of a new, much more extensive toolbox called &#x0201C;Connectome Computation System&#x0201D;<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref> (Xu et al., <xref ref-type="bibr" rid="B64">2015</xref>).</p>
<p>In principle, each program first derives a weighted graph <italic>G</italic> (correlation matrix) from the data, then derives a binary graph <italic>G</italic><sub><italic>B</italic></sub> (adjacency matrix) from <italic>G</italic> based on a functional connectivity threshold, and finally determines the degree <italic>k</italic><sub><italic>i</italic></sub> of each node <italic>i</italic> in <italic>G</italic><sub><italic>B</italic></sub>. Note that these basic steps are not necessarily performed explicitly.</p>
<p>The programs based on <monospace>corrcoef</monospace>, <monospace>corr</monospace>, and <monospace>IPN_fastCorr</monospace> use a full-stored matrix representation as they first compute an <italic>N</italic> &#x000D7; <italic>N</italic> correlation matrix. This matrix is thresholded to derive a binary adjacency matrix. Then, degrees are obtained by summation over rows (or columns) of the adjacency matrix.</p>
<p>The programs using <monospace>FCMAT/half-stored/</monospace><sup>&#x0002A;</sup> first create the matrix object, which, upon creation, computes and internally stores the upper triangle of the correlation matrix based on the input data. In doing so, multi-threading, data locality optimization, and vectorization are used. Data locality optimization is used only in combination with Pearson&#x00027;s <italic>r</italic> for the reasons stated above. The matrix elements are then traversed using the object&#x00027;s accessor method (traversal is parallelized using multiple threads). Upon access, the appropriate pre-computed element is returned by the matrix object. If an element exceeds the threshold, the degree of the corresponding nodes is incremented.</p>
<p>The programs using <monospace>FCMAT/on-demand/</monospace><sup>&#x0002A;</sup> first create the matrix object, which, upon creation, pre-normalizes or binarizes the input data. The matrix elements are then traversed using the object&#x00027;s accessor method (traversal is parallelized using multiple threads). Upon access, the appropriate element is computed, and returned by the matrix object. If an element exceeds the threshold, the degree of the corresponding nodes is incremented. Neither the correlation matrix nor the adjacency matrix is explicitly stored.</p>
<p>The program using <monospace>FCMAT/cache-based/</monospace><italic>r</italic> first creates the matrix object, which, upon creation, initializes the internal cache. The matrix elements are then traversed using the iterator functions. When the next matrix element is requested during traversal, the matrix object checks if the next element is in the cache and retrieves it from there, if that is the case. If not, the cache is filled by computing the next &#x0201C;tile of matrix elements&#x0201D; exploiting multi-threading, data locality optimization, and vectorization in the process. The matrix element along with its coordinates is then returned by the matrix object. Thresholding and incrementation of the appropriate degrees are conducted during traversal in the same way as for the other variants, with the notable exception that the traversal (and hence also thresholding and degree incrementation) is not parallelized.</p>
<p>The program using <monospace>IPN_calLCAM</monospace> does not follow any of the schemes described above. Based on a pre-defined correlation threshold, it employs a block-wise approach to construct a sparse adjacency matrix directly from the data (Zuo et al., <xref ref-type="bibr" rid="B66">2012</xref>). The adjacency matrix is efficiently stored using Matlab&#x00027;s sparse matrix functionality. Explicit storage of the full correlation matrix is thus avoided, while memory requirements during adjacency matrix construction depend on the selected block size, and memory requirements for the final adjacency matrix depend on its sparsity. To efficiently compute the correlation values for each block, <monospace>IPN_calLCAM</monospace> internally uses <monospace>IPN_fastCorr</monospace>. Note that <monospace>IPN_calLCAM</monospace> is not applicable to analyses that use the (weighted) connectivity matrix rather than the adjacency matrix.</p>
</sec>
<sec>
<title>2.2.2. Benchmarks</title>
<p>Benchmarks were conducted using Matlab (R2011b) on two machines, a desktop computer with an Intel Core i7-3960X CPU (3.30 GHz, 6 cores, hyper-threading disabled) and 64 GB of main memory running Linux (openSUSE 13.1, Kernel 3.11), and a server with two Intel Xeon E5-2697 v2 CPUs (2.7 GHz, 12 cores, hyper-threading enabled) and 256 GB of main memory running Linux (Ubuntu 12.04.5 LTS, Kernel 3.13). The C/MEX routines that are part of the programs that use the matrix object were compiled using the GNU C compiler <monospace>gcc</monospace> (optimization level 3; version 4.8.1 and 4.6.3 on the desktop and the server system, respectively). To assess the memory usage of the programs, we used the function <monospace>monMem</monospace><xref ref-type="fn" rid="fn0006"><sup>6</sup></xref>, which, in turn, uses the Linux proc file system to monitor Matlab&#x00027;s resident memory size during program execution.</p>
<p>Three input data sets with a different number of nodes (60,000, 120,000, and 240,000) and <italic>T</italic> &#x0003D; 256 points in time were generated using pseudo-random single-precision floating point numbers. Storage of the full matrix (assuming 4 byte per element) would require 13.4, 53.6, and 214.6 GiB of memory for 60,000, 120,000, and 240,000 nodes, respectively. The correlation threshold was chosen such that the density of the resulting binary graph was approximately 0.01. For <monospace>IPN_calLCAM</monospace>, we used 10 (for the data sets with 60,000 and 120,000 nodes) and 25 blocks (for the data set with 240,000 nodes). The number of threads was varied between 1 and 6 on the desktop computer and between 1 and 48 on the server. For the programs based on the <monospace>FCMAT</monospace> variants the number of threads was controlled via the corresponding parameter. For the programs based on <monospace>corrcoef</monospace>, <monospace>corr</monospace>, <monospace>IPN_fastCorr</monospace>, and <monospace>IPN_calLCAM</monospace> the number of threads was controlled using the Matlab function <monospace>maxNumCompThreads</monospace>.</p>
</sec>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>3. Results</title>
<p>To assess the performance of the different <monospace>FCMAT</monospace> variants, we used the computation of node degrees based on nodal time series data as an example application. Experiments were conducted on the two machines described above. Note that, depending on the number of nodes of the input data set and the available main memory, some tests could not be conducted due to insufficient memory on the respective systems. In correspondence with the number of logical processors on each system, the number of threads was varied between 1 and 6 on the desktop computer and between 1 and 48 on the server.</p>
<p>In Figure <xref ref-type="fig" rid="F1">1</xref>, the main results regarding memory requirements and computation time are illustrated. Here, only the best result is reported for each program, i.e., the result based on the number of threads for which the elapsed time was shortest for that program. This seemed the most appropriate since some programs continually gained performance from additional threads, while for other programs additional threads turned out to be detrimental to their performance after a certain optimal number of threads was exceeded. The performance gained by each program through multi-threading and the cache effectiveness in terms of cache misses are illustrated in Figures <xref ref-type="fig" rid="F2">2</xref> and <xref ref-type="fig" rid="F3">3</xref>, respectively.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>Performance comparison with respect to time and memory efficiency</bold>. The compared programs for degree computation are based on <monospace>corrcoef</monospace> (1), <monospace>corr</monospace> (2), <monospace>IPN_fastCorr</monospace> (3), <monospace>IPN_calLCAM</monospace> (4) and the proposed functional connectivity matrix object <monospace>FCMAT</monospace> using the half-stored (5 and 8), the on-demand (6 and 9) and the cache-based variant (7). The programs 1-7 use Pearson&#x00027;s <italic>r</italic> as a functional connectivity estimate; the programs 8 and 9 use the tetrachoric correlation coefficient <italic>r</italic><sub><italic>t</italic></sub>. Comparisons were conducted on two machines, a desktop computer with an Intel Core i7-3960X CPU and 64GB of main memory, and a server with two Intel Xeon E5-2697 v2 CPUs and 256GB of main memory. The number of threads was varied between 1 and 6 on the desktop computer and between 1 and 48 on the server. For each program, only the best result is reported, i.e., the result based on the number of threads for which the elapsed time was shortest for that program. See Figure <xref ref-type="fig" rid="F2">2</xref> for more detailed results regarding the performance gained by each program through multi-threading. The reported results are averages from 10 runs. For details see text. The number of timepoints <italic>T</italic> was fixed at <italic>T</italic> &#x0003D; 256. <italic>N</italic>: number of nodes; mem [GiB]: peak memory in GiB; time [s]: elapsed time in seconds.</p></caption>
<graphic xlink:href="fninf-10-00050-g0001.tif"/>
</fig>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>Performance gained through multi-threading</bold>. The compared programs for degree computation and the two machines on which the comparisons were conducted are the same as in Figure <xref ref-type="fig" rid="F1">1</xref>. The reported results are averages from 10 runs on each machine. The number of timepoints <italic>T</italic> was fixed at <italic>T</italic> &#x0003D; 256. <italic>N</italic>: number of nodes; perf [elem./s]: performance in number of computed elements per second.</p></caption>
<graphic xlink:href="fninf-10-00050-g0002.tif"/>
</fig>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>Speed vs. cache misses</bold>. The compared programs for degree computation and the two machines on which the comparisons were conducted are the same as in Figures <xref ref-type="fig" rid="F1">1</xref> and <xref ref-type="fig" rid="F2">2</xref>. The reported results are averages from 10 runs on each machine. The number of timepoints <italic>T</italic> was fixed at <italic>T</italic> &#x0003D; 256. <italic>N</italic>: number of nodes; time [s]: elapsed time in seconds.</p></caption>
<graphic xlink:href="fninf-10-00050-g0003.tif"/>
</fig>
<sec>
<title>3.1. Memory requirements and maximum performance</title>
<p>The benchmarks showed that the programs based on <monospace>corrcoef</monospace> (1), <monospace>corr</monospace> (2), and <monospace>IPN_fastCorr</monospace> (3) had the highest memory requirements of all programs (Figure <xref ref-type="fig" rid="F1">1</xref>), which was expected because they employ full matrix storage. However, they used more memory than expected (Table <xref ref-type="table" rid="T1">1</xref>). More specifically, the peak memory of these three programs was about two times higher than expected. Instead of approximately 4(<italic>N</italic><sup>2</sup> &#x0002B; <italic>NT</italic>) bytes it was about twice that much, for example, approximately 27 GiB instead of the expected 13.5 GiB for <italic>N</italic> &#x0003D; 60,000. Of these three programs, <monospace>IPN_fastCorr</monospace> executed fastest, sometimes up to 3&#x000D7; faster than <monospace>corrcoef</monospace>, while <monospace>corr</monospace> was only slightly faster than <monospace>corrcoef</monospace> (Figure <xref ref-type="fig" rid="F1">1</xref>).</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Expected and measured memory usage</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Name</bold></th>
<th valign="top" align="left"><bold>Memory Usage (expected)</bold></th>
<th valign="top" align="center" colspan="6" style="border-bottom: thin solid #000000;"><bold>Memory Usage (measured)</bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="left"><bold>&#x00023; bytes</bold></th>
<th valign="top" align="center"><bold><italic>N</italic> &#x0003D; 6 &#x000B7; 10<sup>4</sup></bold></th>
<th valign="top" align="center"><bold>12 &#x000B7; 10<sup>4</sup></bold></th>
<th valign="top" align="center"><bold>24 &#x000B7; 10<sup>4</sup></bold></th>
<th valign="top" align="center"><bold>6 &#x000B7; 10<sup>4</sup></bold></th>
<th valign="top" align="center"><bold>12 &#x000B7; 10<sup>4</sup></bold></th>
<th valign="top" align="center"><bold>24 &#x000B7; 10<sup>4</sup></bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><monospace>corrcoef</monospace></td>
<td valign="top" align="left">4(<italic>N</italic><sup>2</sup> &#x0002B; <italic>NT</italic>)</td>
<td valign="top" align="char" char=".">13.47</td>
<td valign="top" align="char" char=".">53.76</td>
<td valign="top" align="char" char=".">214.81</td>
<td valign="top" align="char" char=".">26.94</td>
<td valign="top" align="char" char=".">107.52</td>
<td/>
</tr>
<tr style="background-color:#d1d2d4">
<td valign="top" align="left"><monospace>corr</monospace></td>
<td valign="top" align="left">4(<italic>N</italic><sup>2</sup> &#x0002B; <italic>NT</italic>)</td>
<td valign="top" align="char" char=".">13.47</td>
<td valign="top" align="char" char=".">53.76</td>
<td valign="top" align="char" char=".">214.81</td>
<td valign="top" align="char" char=".">26.94</td>
<td valign="top" align="char" char=".">107.52</td>
<td/>
</tr>
<tr>
<td valign="top" align="left"><monospace>IPN_fastCorr</monospace></td>
<td valign="top" align="left">4(<italic>N</italic><sup>2</sup> &#x0002B; <italic>NT</italic>)</td>
<td valign="top" align="char" char=".">13.47</td>
<td valign="top" align="char" char=".">53.76</td>
<td valign="top" align="char" char=".">214.81</td>
<td valign="top" align="char" char=".">26.99</td>
<td valign="top" align="char" char=".">107.63</td>
<td/>
</tr>
<tr style="background-color:#d1d2d4">
<td valign="top" align="left"><monospace>IPN_calLCAM</monospace></td>
<td valign="top" align="left">? &#x0002B; 4<italic>NT</italic></td>
<td/>
<td/>
<td/>
<td valign="top" align="char" char=".">6.23</td>
<td valign="top" align="char" char=".">24.21</td>
<td valign="top" align="char" char=".">44.33</td>
</tr>
<tr>
<td valign="top" align="left"><monospace>FCMAT/half-stored/</monospace><italic>r</italic></td>
<td valign="top" align="left">2<italic>N</italic>(<italic>N</italic> &#x02212; 1) &#x0002B; 8<italic>NT</italic></td>
<td valign="top" align="char" char=".">6.82</td>
<td valign="top" align="char" char=".">27.05</td>
<td valign="top" align="char" char=".">107.75</td>
<td valign="top" align="char" char=".">6.83</td>
<td valign="top" align="char" char=".">27.06</td>
<td valign="top" align="char" char=".">107.75</td>
</tr>
<tr style="background-color:#d1d2d4">
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>r</italic><sub><italic>t</italic></sub></td>
<td valign="top" align="left"><inline-formula><mml:math id="M21"><mml:mn>2</mml:mn><mml:mi>N</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>4</mml:mn><mml:mi>N</mml:mi><mml:mi>T</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>B</mml:mi></mml:mrow><mml:mrow><mml:mn>8</mml:mn></mml:mrow></mml:mfrac><mml:mi>N</mml:mi><mml:mrow><mml:mo>&#x02308;</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>/</mml:mo><mml:mi>B</mml:mi></mml:mrow><mml:mo>&#x02309;</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="char" char=".">6.76</td>
<td valign="top" align="char" char=".">26.94</td>
<td valign="top" align="char" char=".">107.52</td>
<td valign="top" align="char" char=".">6.77</td>
<td valign="top" align="char" char=".">26.94</td>
<td valign="top" align="char" char=".">107.52</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<monospace>on-demand/</monospace><italic>r</italic></td>
<td valign="top" align="left">8<italic>NT</italic></td>
<td valign="top" align="char" char=".">0.11</td>
<td valign="top" align="char" char=".">0.23</td>
<td valign="top" align="char" char=".">0.46</td>
<td valign="top" align="char" char=".">0.12</td>
<td valign="top" align="char" char=".">0.24</td>
<td valign="top" align="char" char=".">0.46</td>
</tr>
<tr style="background-color:#d1d2d4">
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>r</italic><sub><italic>t</italic></sub></td>
<td valign="top" align="left"><inline-formula><mml:math id="M22"><mml:mn>4</mml:mn><mml:mi>N</mml:mi><mml:mi>T</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>B</mml:mi></mml:mrow><mml:mrow><mml:mn>8</mml:mn></mml:mrow></mml:mfrac><mml:mi>N</mml:mi><mml:mrow><mml:mo>&#x02308;</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>/</mml:mo><mml:mi>B</mml:mi></mml:mrow><mml:mo>&#x02309;</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="char" char=".">0.06</td>
<td valign="top" align="char" char=".">0.12</td>
<td valign="top" align="char" char=".">0.24</td>
<td valign="top" align="char" char=".">0.06</td>
<td valign="top" align="char" char=".">0.12</td>
<td valign="top" align="char" char=".">0.24</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<monospace>cache-based/</monospace><italic>r</italic></td>
<td valign="top" align="left">4<italic>C</italic><sup>2</sup> &#x0002B; 8<italic>NT</italic></td>
<td valign="top" align="char" char=".">0.36</td>
<td valign="top" align="char" char=".">0.48</td>
<td valign="top" align="char" char=".">0.71</td>
<td valign="top" align="char" char=".">0.37</td>
<td valign="top" align="char" char=".">0.48</td>
<td valign="top" align="char" char=".">0.71</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The memory requirements of <monospace>IPN_calLCAM</monospace> (4) depend on the number of blocks <italic>S</italic>, so that it is possible to reach lower memory requirements at the cost of increased computation time (due to additional overhead) by choosing a greater number of blocks. Using <italic>S</italic> &#x0003D; 10, <italic>S</italic> &#x0003D; 10, and <italic>S</italic> &#x0003D; 25, the program peaked at approximately 6.2, 24.3, and 44.4 GiB for <italic>N</italic> &#x0003D; 60,000, <italic>N</italic> &#x0003D; 120,000, and <italic>N</italic> &#x0003D; 240,000, respectively. For <italic>N</italic> &#x0003D; 60,000, <monospace>IPN_calLCAM</monospace> executed about 10&#x02013;30% slower than <monospace>corrcoef</monospace> (depending on the system), while it was about 20% faster for <italic>N</italic> &#x0003D; 120,000 on the server (Figure <xref ref-type="fig" rid="F1">1</xref>).</p>
<p>The programs based on <monospace>FCMAT/half-stored/</monospace><italic>r</italic> (5) and <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub> (8) showed the expected memory requirements, which were significantly reduced compared to the programs based on full storage, but still very high. They peaked at about about 7, 27, and 108 GiB for <italic>N</italic> &#x0003D; 60,000, <italic>N</italic> &#x0003D; 120,000, and <italic>N</italic> &#x0003D; 240,000, respectively. Here, the expected memory requirements were computed as</p>
<disp-formula id="E4"><mml:math id="M18"><mml:mrow><mml:munder><mml:munder><mml:mrow><mml:mn>2</mml:mn><mml:mi>N</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>N</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>resulting&#x000A0;matrix</mml:mtext></mml:mrow></mml:munder><mml:mo>+</mml:mo><mml:munder><mml:munder><mml:mrow><mml:mn>4</mml:mn><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>original&#x000A0;data</mml:mtext></mml:mrow></mml:munder><mml:mo>+</mml:mo><mml:munder><mml:munder><mml:mrow><mml:mn>4</mml:mn><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>normalized&#x000A0;data</mml:mtext></mml:mrow></mml:munder><mml:mo>&#x000A0;</mml:mo><mml:mtext>bytes</mml:mtext></mml:mrow></mml:math></disp-formula>
<p>for <monospace>FCMAT/half-stored/</monospace><italic>r</italic>, and</p>
<disp-formula id="E5"><mml:math id="M19"><mml:mrow><mml:munder><mml:munder><mml:mrow><mml:mn>2</mml:mn><mml:mi>N</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>N</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>resulting&#x000A0;matrix</mml:mtext></mml:mrow></mml:munder><mml:mo>+</mml:mo><mml:munder><mml:munder><mml:mrow><mml:mn>4</mml:mn><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>original&#x000A0;data</mml:mtext></mml:mrow></mml:munder><mml:mo>+</mml:mo><mml:munder><mml:munder><mml:mrow><mml:mfrac><mml:mi>B</mml:mi><mml:mn>8</mml:mn></mml:mfrac><mml:mi>N</mml:mi><mml:mrow><mml:mo>&#x02308;</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>/</mml:mo><mml:mi>B</mml:mi></mml:mrow><mml:mo>&#x02309;</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mtext>binarized&#x000A0;data</mml:mtext></mml:mrow></mml:munder><mml:mo>&#x000A0;</mml:mo><mml:mtext>bytes</mml:mtext></mml:mrow></mml:math></disp-formula>
<p>where <italic>B</italic> is the number of bits per integer variable, for <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub> (Table <xref ref-type="table" rid="T1">1</xref>). Depending on the system and the number of nodes, <monospace>FCMAT/half-stored/</monospace><italic>r</italic> and <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub> ran between 3 and 12&#x000D7; and 11 and 39&#x000D7; faster than <monospace>corrcoef</monospace> (Figure <xref ref-type="fig" rid="F1">1</xref>).</p>
<p>The memory requirements of the programs based on <monospace>FCMAT/on-demand/</monospace><italic>r</italic> (6) and <monospace>FCMAT/on-demand/</monospace><italic>r</italic><sub><italic>t</italic></sub> (9) remained below 0.5 GiB for all three data sets. Specifically, the former peaked at approximately 0.12, 0.23, and 0.46 GiB corresponding to the expected 4<italic>NT</italic> (original data) &#x0002B; 4<italic>NT</italic> (normalized data) bytes, while the latter peaked at approximately 0.06, 0.12, and 0.24 GiB, corresponding to 4<italic>NT</italic> (original data) &#x0002B; <inline-formula><mml:math id="M20"><mml:mfrac><mml:mrow><mml:mi>B</mml:mi></mml:mrow><mml:mrow><mml:mn>8</mml:mn></mml:mrow></mml:mfrac><mml:mi>N</mml:mi><mml:mrow><mml:mo>&#x02308;</mml:mo><mml:mrow><mml:mi>T</mml:mi><mml:mo>/</mml:mo><mml:mi>B</mml:mi></mml:mrow><mml:mo>&#x02309;</mml:mo></mml:mrow></mml:math></inline-formula> (binarized data) bytes, for <italic>N</italic> &#x0003D; 60,000, <italic>N</italic> &#x0003D; 120,000, and <italic>N</italic> &#x0003D; 240,000, respectively. Depending on the system and the number of nodes, <monospace>FCMAT/on-demand/</monospace><italic>r</italic> executed 1.8&#x02013;3.6&#x000D7; slower than the corresponding <italic>half-stored</italic> variant <monospace>FCMAT/half-stored/</monospace><italic>r</italic>, while <monospace>FCMAT/on-demand/</monospace><italic>r</italic><sub><italic>t</italic></sub> executed up to 1.5&#x000D7; faster than its <italic>half-stored</italic> pendant <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub> (Figure <xref ref-type="fig" rid="F1">1</xref>).</p>
<p>The program based on <monospace>FCMAT/cache-based/</monospace><italic>r</italic> (7) peaked at approximately 0.36 (<italic>N</italic> &#x0003D; 60,000), 0.48 (<italic>N</italic> &#x0003D; 120,000), and 0.71 GiB (<italic>N</italic> &#x0003D; 240,000) corresponding to the expected 4<italic>C</italic><sup>2</sup> &#x0002B; 8<italic>NT</italic> bytes (using a cache tile size of <italic>C</italic> &#x0003D; 8192). On the desktop, depending on the number of nodes, <monospace>FCMAT/cache-based/</monospace><italic>r</italic> executed about 1.6&#x02013;1.9&#x000D7; faster than the corresponding on-demand variant and about 2.1&#x000D7; slower than the corresponding half-stored variant. On the server, depending on the number of nodes, it executed about 1.2&#x02013;3&#x000D7; slower than the on-demand variant and about 5.5&#x000D7; slower than the half-stored variant (Figure <xref ref-type="fig" rid="F1">1</xref>).</p>
</sec>
<sec>
<title>3.2. Performance gain through multi-threading</title>
<p>After reaching a performance maximum at a certain number of threads, the programs using <monospace>corrcoef</monospace>, <monospace>corr</monospace>, <monospace>IPN_fastCorr</monospace>, and <monospace>IPN_calLCAM</monospace> exhibited stagnating and even decreasing performance upon adding more computational threads (Figure <xref ref-type="fig" rid="F2">2</xref>, especially on the server). A similar observation can be made for <monospace>FCMAT/cache-based/</monospace><italic>r</italic>, although performance seems to reach a plateau state of maximum performance, such that additional threads do not improve performance further but no performance decrease is observed either. On a related note, <monospace>FCMAT/cache-based/</monospace><italic>r</italic> is significantly faster than <monospace>FCMAT/on-demand/</monospace><italic>r</italic> for smaller numbers of threads, but this advantage is lost in the course of more threads being added (Figure <xref ref-type="fig" rid="F2">2</xref>, especially on the Xeon system). This is because <monospace>FCMAT/on-demand/</monospace><italic>r</italic> sustains a relatively constant high performance gain per thread over the entire range of the number of threads. A similar observation can be made for <monospace>FCMAT/on-demand/</monospace><italic>r</italic><sub><italic>t</italic></sub> and <monospace>FCMAT/half-stored/</monospace><italic>r</italic><sub><italic>t</italic></sub> (Figure <xref ref-type="fig" rid="F2">2</xref>, both systems).</p>
</sec>
<sec>
<title>3.3. Cache misses</title>
<p>To assess how well the attempted data locality optimization worked (especially with regard to <monospace>FCMAT/cache-based/r</monospace>), we compared the programs&#x00027; computation time with the number of cache misses (Figure <xref ref-type="fig" rid="F3">3</xref>). Note that these measurements were conducted using only one thread.</p>
<p>Comparing the programs using <monospace>FCMAT/&#x0002A;/r</monospace>, the on-demand variant had the greatest number of cache misses and correspondingly exhibited the lowest performance (with respect to computation time). The other two variants exhibited a similar number of cache misses (both had significantly fewer cache misses than the on-demand variant), but the half-stored variant still ran faster than the cache-based variant, while both ran significantly faster than the on-demand variant. Similarly, the programs using <monospace>corrcoef</monospace> and <monospace>corr</monospace> exhibited a similar number of cache misses, but the latter outperformed the former. Furthermore, <monospace>corrcoef</monospace> was about as fast as <monospace>FCMAT/cache-based/r</monospace> and <monospace>corr</monospace> was about as fast as <monospace>FCMAT/half-stored/r</monospace>, although <monospace>corrcoef</monospace> and <monospace>corr</monospace> exhibited more cache misses than the other two. The program using <monospace>IPN_fastCorr</monospace> exhibited a lower number of cache misses than both <monospace>corrcoef</monospace> and <monospace>corr</monospace> but higher than <monospace>FCMAT/half-stored/r</monospace> and <monospace>FCMAT/cache-based/r</monospace>. Its performance ranked between that of <monospace>corrcoef</monospace> and <monospace>corr</monospace>. The number of cache misses for <monospace>IPN_calLCAM</monospace> was comparable with that of <monospace>corrcoef</monospace> and <monospace>corr</monospace>, but it was significantly slower than both.</p>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>4. Discussion</title>
<p>Dense connectomes allow for spatially more fine-grained connectivity analyses, but are associated with significant computational demands (van den Heuvel et al., <xref ref-type="bibr" rid="B56">2008</xref>; Hayasaka and Laurienti, <xref ref-type="bibr" rid="B18">2010</xref>; de Reus and Van den Heuvel, <xref ref-type="bibr" rid="B9">2013</xref>; Fornito et al., <xref ref-type="bibr" rid="B14">2013</xref>). Available computing resources are often insufficient to meet these demands, so that dense connectome analyses become infeasible (e.g., Smith et al., <xref ref-type="bibr" rid="B44">2014</xref>). In an attempt to address this issue, we presented an object-based functional connectivity matrix representation (<monospace>FCMAT</monospace>) and corresponding implementation variants, tailored for the analysis of dense functional connectomes. Based on theoretical considerations and benchmarks, different implementation variants of this object and four additional programs (based on available Matlab functions and Matlab-based third-party software) were compared with regard to their computational efficiency in terms of both memory requirements and computation time.</p>
<p>The most memory-efficient <monospace>FCMAT</monospace> variant avoids explicit matrix storage by computing matrix elements <italic>on demand</italic> based on the underlying time series data (<monospace>FCMAT/on-demand/</monospace><sup>&#x0002A;</sup>). Since, in the considered application domain, the number of nodes is much greater than the number of scans, the memory requirements of a dense connectome are effectively reduced by orders of magnitude compared to explicit storage of the connectivity matrix.</p>
<p>However, explicit storage has an advantage over on-demand computation when it comes to computation time because data locality optimization can be employed. Accordingly, the implementation using explicit matrix storage, <monospace>FCMAT/half-stored/</monospace><sup>&#x0002A;</sup>, is the fastest of the presented variants. It is also faster than the alternatives based on explicit storage (full-stored), <monospace>corrcoef</monospace> (Matlab built-in), <monospace>corr</monospace> (Matlab Statistics Toolbox), and <monospace>IPN_fastCorr</monospace> (from the Matlab toolbox &#x0201C;IPN_voxelGraph&#x0201D; by Xi-Nian Zuo)<xref ref-type="fn" rid="fn0007"><sup>7</sup></xref>. Of these, <monospace>IPN_fastCorr</monospace> was significantly faster than the other two. Regarding memory requirements, <monospace>FCMAT/half-stored/</monospace><sup>&#x0002A;</sup> has an advantage over the full-stored programs because it exploits matrix symmetry in order to save memory. Nevertheless, the memory requirements of <monospace>FCMAT/half-stored/</monospace><sup>&#x0002A;</sup> are still too high for many applications.</p>
<p>In addition to <monospace>FCMAT/half-stored/</monospace><sup>&#x0002A;</sup> and <monospace>FCMAT/on-demand/</monospace><sup>&#x0002A;</sup>, a third, cache-based variant, <monospace>FCMAT/cache-based/</monospace><italic>r</italic>, was implemented in an attempt to combine the advantages of the first two. Regarding time efficiency, this variant is at an advantage over the on-demand variant, in that it can use data locality optimization, which is reflected in the observed reduction in cache misses. It is, however, at a disadvantage compared to the half-stored variant, because of the overhead that results from maintaining the cache. Regarding memory efficiency, the cache-based scheme requires far less memory than the half-stored scheme although not quite as little as the on-demand scheme (assuming a sensible choice for the cache size). Depending on the application, the cache-based scheme may thus provide a reasonable compromise between explicit storage and on-demand computation, by being more memory-efficient than the former, but faster than the latter. However, while the computation of the matrix elements by the matrix object can be parallelized (during cache fills), the traversal of these elements by the client code can not be parallelized. If additional, potentially expensive, computations need to be conducted during matrix traversal, this drawback can tip the balance in favor of one of the other implementations for some applications (see Amdahl, <xref ref-type="bibr" rid="B4">1967</xref>). In this context, the number of cores of the system also needs to be taken into account. As the benchmarks illustrate, the on-demand variant should be chosen over the cache-based variant on a system with many cores because the impact of this issue increases with the degree of parallelization.</p>
<p>Considering the example application used for benchmarking, each of the created programs for node degree computation (implicitly or explicitly) derives a binary adjacency matrix from the connectivity matrix based on a threshold. Depending on the thresholding scheme used (e.g., based on graph density), an additional run through the data may be necessary to determine the threshold in terms of absolute correlation before the degree map can be computed. For those programs that do not operate on the explicitly stored connectome (<monospace>IPN_calLCAM</monospace>, <monospace>FCMAT/on-demand/</monospace><sup>&#x0002A;</sup> and <monospace>FCMAT/cache-based/r</monospace>), this entails that the correlation values need to be computed twice. This example makes clear that, especially in situations where the matrix or connectome will be used more than once (e.g., when subjected to multiple analyses), explicit storage should be used if it is affordable (with respect to the available main memory) in order to save computation time.</p>
<p>Although the present programs provide a highly efficient way of conducting analyses, there are some limitations that should be noted. First, in cases of extremely large multi-subject data sets (in terms of number of subjects or scans), too much memory may still be required for these methods to be applied because the time series data of all subjects could already be too large to be stored in main memory. In some cases, the analysis procedure could be adapted to hold only a sufficiently small partition of the data in memory at any given time. Second, the current implementation only supports Pearson&#x00027;s <italic>r</italic> and <italic>r</italic><sub><italic>t</italic></sub>. In the case of dense connectomes, the number of nodes and therefore edges is a lot higher than the number of scans, so that the underlying population correlation &#x003C1; cannot be estimated very accurately using <italic>r</italic> or <italic>r</italic><sub><italic>t</italic></sub> (e.g., Varoquaux and Craddock, <xref ref-type="bibr" rid="B59">2013</xref>). The extension of <monospace>FCMAT</monospace> to support other, possibly better estimates is a subject for future work. Finally, while <monospace>FCMAT</monospace> provides the basis for the efficient analysis of dense connectomes, the tools for the analyses themselves (for example, graph-theoretical analyses or statistical inference), still need to be implemented (on top of it), which, depending on the analysis in question, may prove to be a lot more difficult.</p>
<p>To summarize, when considering the computational burden of dense functional connectome analysis, the manner in which connectivity matrices are represented plays an important role. We show here that a set of complementary implementation variants of an object-based matrix representation (<monospace>FCMAT</monospace>) provide a highly efficient foundation for dense connectome analysis. If affordable in terms of available memory, explicit matrix storage should be used, since it provides the best performance in terms of CPU time. However, if its memory requirements render the use of explicit storage infeasible, on-demand computation or cache-based iteration provide memory-efficient alternatives. In particular, the on-demand and cache-based implementation variants allow for the analysis of larger data sets on commonly available hardware, which may not have been possible before, based on explicit storage. With the ever-growing need for maximal spatial precision and resolution among large sets of subjects in fMRI connectivity analyses, the development of efficient tools such as these is paramount to the advancement of our understanding of the human brain.</p>
</sec>
<sec id="s5">
<title>Author contributions</title>
<p>KL conceived of the study. KL and CB wrote the software. KL carried out the benchmarks. KL wrote the manuscript. SD, MS, RK, and CB edited the manuscript. All authors read and approved the final manuscript.</p>
</sec>
<sec id="s6">
<title>Funding</title>
<p>This work was in part supported by Deutsche Forschungsgemeinschaft SFB 779 (A14N).</p>
<sec>
<title>Conflict of interest statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p></sec>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Achard</surname> <given-names>S.</given-names></name> <name><surname>Salvador</surname> <given-names>R.</given-names></name> <name><surname>Whitcher</surname> <given-names>B.</given-names></name> <name><surname>Suckling</surname> <given-names>J.</given-names></name> <name><surname>Bullmore</surname> <given-names>E.</given-names></name></person-group> (<year>2006</year>). <article-title>A resilient, low-frequency, small-world human brain functional network with highly connected association cortical hubs</article-title>. <source>J. Neurosci.</source> <volume>26</volume>, <fpage>63</fpage>&#x02013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.3874-05.2006</pub-id><pub-id pub-id-type="pmid">16399673</pub-id></citation>
</ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Agosta</surname> <given-names>F.</given-names></name> <name><surname>Sala</surname> <given-names>S.</given-names></name> <name><surname>Valsasina</surname> <given-names>P.</given-names></name> <name><surname>Meani</surname> <given-names>A.</given-names></name> <name><surname>Canu</surname> <given-names>E.</given-names></name> <name><surname>Magnani</surname> <given-names>G.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Brain network connectivity assessed using graph theory in frontotemporal dementia</article-title>. <source>Neurology</source> <volume>81</volume>, <fpage>134</fpage>&#x02013;<lpage>143</lpage>. <pub-id pub-id-type="doi">10.1212/WNL.0b013e31829a33f8</pub-id><pub-id pub-id-type="pmid">23719145</pub-id></citation>
</ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Akil</surname> <given-names>H.</given-names></name> <name><surname>Martone</surname> <given-names>M.</given-names></name> <name><surname>Van Essen</surname> <given-names>D.</given-names></name></person-group> (<year>2011</year>). <article-title>Challenges and opportunities in mining neuroscience data</article-title>. <source>Science (New York, NY)</source> <volume>331</volume>:<fpage>708</fpage>. <pub-id pub-id-type="doi">10.1126/science.1199305</pub-id><pub-id pub-id-type="pmid">21311009</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Amdahl</surname> <given-names>G. M.</given-names></name></person-group> (<year>1967</year>). <article-title>Validity of the single processor approach to achieving large scale computing capabilities</article-title>, in <source>Proceedings of the April 18-20, 1967, Spring Joint Computer Conference</source> (<publisher-loc>New York, NY</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>483</fpage>&#x02013;<lpage>485</lpage>. <pub-id pub-id-type="doi">10.1145/1465482.1465560</pub-id>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://dl.acm.org/citation.cfm?id=1465560">http://dl.acm.org/citation.cfm?id=1465560</ext-link></citation>
</ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Binnewijzend</surname> <given-names>M. A.</given-names></name> <name><surname>Adriaanse</surname> <given-names>S. M.</given-names></name> <name><surname>Flier</surname> <given-names>W. M.</given-names></name> <name><surname>Teunissen</surname> <given-names>C. E.</given-names></name> <name><surname>Munck</surname> <given-names>J. C.</given-names></name> <name><surname>Stam</surname> <given-names>C. J.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Brain network alterations in alzheimer&#x00027;s disease measured by eigenvector centrality in fmri are related to cognition and csf biomarkers</article-title>. <source>Hum. Brain Mapp.</source> <volume>35</volume>, <fpage>2383</fpage>&#x02013;<lpage>2393</lpage>. <pub-id pub-id-type="doi">10.1002/hbm.22335</pub-id><pub-id pub-id-type="pmid">24039033</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Biswal</surname> <given-names>B.</given-names></name> <name><surname>Mennes</surname> <given-names>M.</given-names></name> <name><surname>Zuo</surname> <given-names>X.</given-names></name> <name><surname>Gohel</surname> <given-names>S.</given-names></name> <name><surname>Kelly</surname> <given-names>C.</given-names></name> <name><surname>Smith</surname> <given-names>S.</given-names></name> <etal/></person-group>. (<year>2010</year>). <article-title>Toward discovery science of human brain function</article-title>. <source>Proc. Natl. Acad. Sci. U.S.A.</source> <volume>107</volume>:<fpage>4734</fpage>. <pub-id pub-id-type="doi">10.1073/pnas.0911855107</pub-id><pub-id pub-id-type="pmid">20176931</pub-id></citation>
</ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Brier</surname> <given-names>M. R.</given-names></name> <name><surname>Thomas</surname> <given-names>J. B.</given-names></name> <name><surname>Fagan</surname> <given-names>A. M.</given-names></name> <name><surname>Hassenstab</surname> <given-names>J.</given-names></name> <name><surname>Holtzman</surname> <given-names>D. M.</given-names></name> <name><surname>Benzinger</surname> <given-names>T. L.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Functional connectivity and graph theory in preclinical alzheimer&#x00027;s disease</article-title>. <source>Neurobiol. Aging</source> <volume>35</volume>, <fpage>757</fpage>&#x02013;<lpage>768</lpage>. <pub-id pub-id-type="doi">10.1016/j.neurobiolaging.2013.10.081</pub-id><pub-id pub-id-type="pmid">24216223</pub-id></citation>
</ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Buckner</surname> <given-names>R.</given-names></name> <name><surname>Sepulcre</surname> <given-names>J.</given-names></name> <name><surname>Talukdar</surname> <given-names>T.</given-names></name> <name><surname>Krienen</surname> <given-names>F.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Hedden</surname> <given-names>T.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Cortical hubs revealed by intrinsic functional connectivity: mapping, assessment of stability, and relation to alzheimer&#x00027;s disease</article-title>. <source>J. Neurosci.</source> <volume>29</volume>, <fpage>1860</fpage>&#x02013;<lpage>1873</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.5062-08.2009</pub-id><pub-id pub-id-type="pmid">19211893</pub-id></citation>
</ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>de Reus</surname> <given-names>M. A.</given-names></name> <name><surname>Van den Heuvel</surname> <given-names>M. P.</given-names></name></person-group> (<year>2013</year>). <article-title>The parcellation-based connectome: limitations and extensions</article-title>. <source>Neuroimage</source> <volume>80</volume>, <fpage>397</fpage>&#x02013;<lpage>404</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2013.03.053</pub-id><pub-id pub-id-type="pmid">23558097</pub-id></citation>
</ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Di Martino</surname> <given-names>A.</given-names></name> <name><surname>Zuo</surname> <given-names>X.-N.</given-names></name> <name><surname>Kelly</surname> <given-names>C.</given-names></name> <name><surname>Grzadzinski</surname> <given-names>R.</given-names></name> <name><surname>Mennes</surname> <given-names>M.</given-names></name> <name><surname>Schvarcz</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Shared and distinct intrinsic functional network centrality in autism and attention-deficit/hyperactivity disorder</article-title>. <source>Biol. Psychiatry</source> <volume>74</volume>, <fpage>623</fpage>&#x02013;<lpage>632</lpage>. <pub-id pub-id-type="doi">10.1016/j.biopsych.2013.02.011</pub-id><pub-id pub-id-type="pmid">23541632</pub-id></citation>
</ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dosenbach</surname> <given-names>N.</given-names></name> <name><surname>Nardos</surname> <given-names>B.</given-names></name> <name><surname>Cohen</surname> <given-names>A.</given-names></name> <name><surname>Fair</surname> <given-names>D.</given-names></name> <name><surname>Power</surname> <given-names>J.</given-names></name> <name><surname>Church</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2010</year>). <article-title>Prediction of individual brain maturity using fMRI</article-title>. <source>Science</source> <volume>329</volume>, <fpage>1358</fpage>&#x02013;<lpage>1361</lpage>. <pub-id pub-id-type="doi">10.1126/science.1194144</pub-id><pub-id pub-id-type="pmid">20829489</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fair</surname> <given-names>D.</given-names></name> <name><surname>Cohen</surname> <given-names>A.</given-names></name> <name><surname>Power</surname> <given-names>J.</given-names></name> <name><surname>Dosenbach</surname> <given-names>N.</given-names></name> <name><surname>Church</surname> <given-names>J.</given-names></name> <name><surname>Miezin</surname> <given-names>F.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Functional brain networks develop from a local to distributed organization</article-title>. <source>PLoS Comput. Biol.</source> <volume>5</volume>:<fpage>e1000381</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.1000381</pub-id><pub-id pub-id-type="pmid">19412534</pub-id></citation>
</ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fornito</surname> <given-names>A.</given-names></name> <name><surname>Yoon</surname> <given-names>J.</given-names></name> <name><surname>Zalesky</surname> <given-names>A.</given-names></name> <name><surname>Bullmore</surname> <given-names>E. T.</given-names></name> <name><surname>Carter</surname> <given-names>C. S.</given-names></name></person-group> (<year>2011</year>). <article-title>General and specific functional connectivity disturbances in first-episode schizophrenia during cognitive control performance</article-title>. <source>Biol. Psychiatry</source> <volume>70</volume>, <fpage>64</fpage>&#x02013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1016/j.biopsych.2011.02.019</pub-id><pub-id pub-id-type="pmid">21514570</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fornito</surname> <given-names>A.</given-names></name> <name><surname>Zalesky</surname> <given-names>A.</given-names></name> <name><surname>Breakspear</surname> <given-names>M.</given-names></name></person-group> (<year>2013</year>). <article-title>Graph analysis of the human connectome: promise, progress, and pitfalls</article-title>. <source>Neuroimage</source> <volume>80</volume>, <fpage>426</fpage>&#x02013;<lpage>444</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2013.04.087</pub-id><pub-id pub-id-type="pmid">23643999</pub-id></citation>
</ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Freeman</surname> <given-names>L.</given-names></name></person-group> (<year>1979</year>). <article-title>Centrality in social networks conceptual clarification</article-title>. <source>Soc. Netw.</source> <volume>1</volume>, <fpage>215</fpage>&#x02013;<lpage>239</lpage>. <pub-id pub-id-type="doi">10.1016/0378-8733(78)90021-7</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Frigo</surname> <given-names>M.</given-names></name> <name><surname>Leiserson</surname> <given-names>C.</given-names></name> <name><surname>Prokop</surname> <given-names>H.</given-names></name> <name><surname>Ramachandran</surname> <given-names>S.</given-names></name></person-group> (<year>1999</year>). <article-title>Cache-oblivious algorithms</article-title>, in <source>Proceedings 40th IEEE Symposium on Foundations of Computer Science (FOCS&#x00027;99, New York, NY)</source> (<publisher-loc>Piscataway, NJ: IEEE Press</publisher-loc>), <fpage>285</fpage>&#x02013;<lpage>297</lpage>. <pub-id pub-id-type="doi">10.1109/sffcs.1999.814600</pub-id></citation>
</ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Glasser</surname> <given-names>M. F.</given-names></name> <name><surname>Sotiropoulos</surname> <given-names>S.</given-names></name> <name><surname>Wilson</surname> <given-names>J.</given-names></name> <name><surname>Coalson</surname> <given-names>T.</given-names></name> <name><surname>Fischl</surname> <given-names>B.</given-names></name> <name><surname>Andersson</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>The minimal preprocessing pipelines for the human connectome project</article-title>. <source>Neuroimage</source> <volume>80</volume>, <fpage>105</fpage>&#x02013;<lpage>124</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2013.04.127</pub-id><pub-id pub-id-type="pmid">23668970</pub-id></citation>
</ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hayasaka</surname> <given-names>S.</given-names></name> <name><surname>Laurienti</surname> <given-names>P.</given-names></name></person-group> (<year>2010</year>). <article-title>Comparison of characteristics between region-and voxel-based network analyses in resting-state fMRI data</article-title>. <source>Neuroimage</source> <volume>50</volume>, <fpage>499</fpage>&#x02013;<lpage>508</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2009.12.051</pub-id><pub-id pub-id-type="pmid">20026219</pub-id></citation>
</ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>He</surname> <given-names>Y.</given-names></name> <name><surname>Wang</surname> <given-names>J.</given-names></name> <name><surname>Wang</surname> <given-names>L.</given-names></name> <name><surname>Chen</surname> <given-names>Z. J.</given-names></name> <name><surname>Yan</surname> <given-names>C.</given-names></name> <name><surname>Yang</surname> <given-names>H.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Uncovering intrinsic modular organization of spontaneous brain activity in humans</article-title>. <source>PLoS ONE</source> <volume>4</volume>:<fpage>e5226</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0005226</pub-id><pub-id pub-id-type="pmid">19381298</pub-id></citation>
</ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hlinka</surname> <given-names>J.</given-names></name> <name><surname>Palus</surname> <given-names>M.</given-names></name> <name><surname>Vejmelka</surname> <given-names>M.</given-names></name> <name><surname>Mantini</surname> <given-names>D.</given-names></name> <name><surname>Corbetta</surname> <given-names>M.</given-names></name></person-group> (<year>2011</year>). <article-title>Functional connectivity in resting-state fMRI: is linear correlation sufficient?</article-title> <source>Neuroimage</source> <volume>54</volume>, <fpage>2218</fpage>&#x02013;<lpage>2225</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2010.08.042</pub-id><pub-id pub-id-type="pmid">20800096</pub-id></citation>
</ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hutchison</surname> <given-names>R. M.</given-names></name> <name><surname>Womelsdorf</surname> <given-names>T.</given-names></name> <name><surname>Allen</surname> <given-names>E. A.</given-names></name> <name><surname>Bandettini</surname> <given-names>P. A.</given-names></name> <name><surname>Calhoun</surname> <given-names>V. D.</given-names></name> <name><surname>Corbetta</surname> <given-names>M.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Dynamic functional connectivity: promise, issues, and interpretations</article-title>. <source>Neuroimage</source> <volume>80</volume>, <fpage>360</fpage>&#x02013;<lpage>378</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2013.05.079</pub-id><pub-id pub-id-type="pmid">23707587</pub-id></citation>
</ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>L.</given-names></name> <name><surname>Xu</surname> <given-names>T.</given-names></name> <name><surname>He</surname> <given-names>Y.</given-names></name> <name><surname>Hou</surname> <given-names>X.-H.</given-names></name> <name><surname>Wang</surname> <given-names>J.</given-names></name> <name><surname>Cao</surname> <given-names>X.-Y.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Toward neurobiological characterization of functional homogeneity in the human cortex: regional variation, morphological association and functional covariance network organization</article-title>. <source>Brain Struct. Funct.</source> <volume>220</volume>, <fpage>2485</fpage>&#x02013;<lpage>2507</lpage>. <pub-id pub-id-type="doi">10.1007/s00429-014-0795-8</pub-id><pub-id pub-id-type="pmid">24903825</pub-id></citation>
</ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>L.</given-names></name> <name><surname>Zuo</surname> <given-names>X.-N.</given-names></name></person-group> (<year>2016</year>). <article-title>Regional homogeneity a multimodal, multiscale neuroimaging marker of the human connectome</article-title>. <source>Neuroscientist</source> <volume>22</volume>, <fpage>486</fpage>&#x02013;<lpage>505</lpage>. <pub-id pub-id-type="doi">10.1177/1073858415595004</pub-id><pub-id pub-id-type="pmid">26170004</pub-id></citation>
</ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kelly</surname> <given-names>C.</given-names></name> <name><surname>Biswal</surname> <given-names>B. B.</given-names></name> <name><surname>Craddock</surname> <given-names>R. C.</given-names></name> <name><surname>Castellanos</surname> <given-names>F. X.</given-names></name> <name><surname>Milham</surname> <given-names>M. P.</given-names></name></person-group> (<year>2012</year>). <article-title>Characterizing variation in the functional connectome: promise and pitfalls</article-title>. <source>Trends Cogn. Sci.</source> <volume>16</volume>, <fpage>181</fpage>&#x02013;<lpage>188</lpage>. <pub-id pub-id-type="doi">10.1016/j.tics.2012.02.001</pub-id><pub-id pub-id-type="pmid">22341211</pub-id></citation>
</ref>
<ref id="B25">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Loewe</surname> <given-names>K.</given-names></name> <name><surname>Grueschow</surname> <given-names>M.</given-names></name> <name><surname>Borgelt</surname> <given-names>C.</given-names></name></person-group> (<year>2013</year>). <article-title>Mining local connectivity patterns in fMRI data</article-title>, in <source>Towards Advanced Data Analysis by Combining Soft Computing and Statistics, vol. 285 of Studies in Fuzziness and Soft Computing</source>, eds <person-group person-group-type="editor"><name><surname>Borgelt</surname> <given-names>C.</given-names></name> <name><surname>&#x000C1;ngeles</surname> <given-names>M.</given-names></name> <name><surname>Gil</surname> <given-names>M.</given-names></name> <name><surname>Sousa</surname> <given-names>J.</given-names></name> <name><surname>Verleysen</surname> <given-names>M.</given-names></name></person-group> (<publisher-loc>Berlin; Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>305</fpage>&#x02013;<lpage>317</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-642-30278-7_24</pub-id></citation>
</ref>
<ref id="B26">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Loewe</surname> <given-names>K.</given-names></name> <name><surname>Grueschow</surname> <given-names>M.</given-names></name> <name><surname>Stoppel</surname> <given-names>C.</given-names></name> <name><surname>Kruse</surname> <given-names>R.</given-names></name> <name><surname>Borgelt</surname> <given-names>C.</given-names></name></person-group> (<year>2014</year>). <article-title>Fast construction of voxel-level functional connectivity graphs</article-title>. <source>BMC Neurosci.</source> <volume>15</volume>:<fpage>78</fpage>. <pub-id pub-id-type="doi">10.1186/1471-2202-15-78</pub-id><pub-id pub-id-type="pmid">24947161</pub-id></citation>
</ref>
<ref id="B27">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lohmann</surname> <given-names>G.</given-names></name> <name><surname>Margulies</surname> <given-names>D. S.</given-names></name> <name><surname>Horstmann</surname> <given-names>A.</given-names></name> <name><surname>Pleger</surname> <given-names>B.</given-names></name> <name><surname>Lepsien</surname> <given-names>J.</given-names></name> <name><surname>Goldhahn</surname> <given-names>D.</given-names></name> <etal/></person-group>. (<year>2010</year>). <article-title>Eigenvector centrality mapping for analyzing connectivity patterns in fmri data of the human brain</article-title>. <source>PLoS ONE</source> <volume>5</volume>:<fpage>e10232</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0010232</pub-id><pub-id pub-id-type="pmid">20436911</pub-id></citation>
</ref>
<ref id="B28">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lohmann</surname> <given-names>G.</given-names></name> <name><surname>Stelzer</surname> <given-names>J.</given-names></name> <name><surname>Zuber</surname> <given-names>V.</given-names></name> <name><surname>Buschmann</surname> <given-names>T.</given-names></name> <name><surname>Margulies</surname> <given-names>D.</given-names></name> <name><surname>Bartels</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2016</year>). <article-title>Task-related edge density (ted)a new method for revealing dynamic network formation in fMRI data of the human brain</article-title>. <source>PLoS ONE</source> <volume>11</volume>:<fpage>e0158185</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0158185</pub-id><pub-id pub-id-type="pmid">27341204</pub-id></citation>
</ref>
<ref id="B29">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Marcus</surname> <given-names>D.</given-names></name> <name><surname>Harwell</surname> <given-names>J.</given-names></name> <name><surname>Olsen</surname> <given-names>T.</given-names></name> <name><surname>Hodge</surname> <given-names>M.</given-names></name> <name><surname>Glasser</surname> <given-names>M.</given-names></name> <name><surname>Prior</surname> <given-names>F.</given-names></name> <etal/></person-group>. (<year>2011</year>). <article-title>Informatics and data mining tools and strategies for the human connectome project</article-title>. <source>Front. Neuroinformatics</source> <volume>5</volume>:<fpage>4</fpage>. <pub-id pub-id-type="doi">10.3389/fninf.2011.00004</pub-id><pub-id pub-id-type="pmid">21743807</pub-id></citation>
</ref>
<ref id="B30">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Markett</surname> <given-names>S.</given-names></name> <name><surname>Montag</surname> <given-names>C.</given-names></name> <name><surname>Heeren</surname> <given-names>B.</given-names></name> <name><surname>Saryiska</surname> <given-names>R.</given-names></name> <name><surname>Lachmann</surname> <given-names>B.</given-names></name> <name><surname>Weber</surname> <given-names>B.</given-names></name> <etal/></person-group>. (<year>2016</year>). <article-title>Voxelwise eigenvector centrality mapping of the human functional connectome reveals an influence of the catechol-o-methyltransferase val158met polymorphism on the default mode and somatomotor network</article-title>. <source>Brain Struct. Funct.</source> <volume>221</volume>:<fpage>2755</fpage>. <pub-id pub-id-type="doi">10.1007/s00429-015-1069-9</pub-id><pub-id pub-id-type="pmid">26025199</pub-id></citation>
</ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Markett</surname> <given-names>S.</given-names></name> <name><surname>Reuter</surname> <given-names>M.</given-names></name> <name><surname>Montag</surname> <given-names>C.</given-names></name> <name><surname>Voigt</surname> <given-names>G.</given-names></name> <name><surname>Lachmann</surname> <given-names>B.</given-names></name> <name><surname>Rudorf</surname> <given-names>S.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Assessing the function of the fronto-parietal attention network: insights from resting-state fmri and the attentional network test</article-title>. <source>Hum. Brain Mapping</source> <volume>35</volume>, <fpage>1700</fpage>&#x02013;<lpage>1709</lpage>. <pub-id pub-id-type="doi">10.1002/hbm.22285</pub-id><pub-id pub-id-type="pmid">23670989</pub-id></citation>
</ref>
<ref id="B32">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Matthews</surname> <given-names>P. M.</given-names></name> <name><surname>Hampshire</surname> <given-names>A.</given-names></name></person-group> (<year>2016</year>). <article-title>Clinical concepts emerging from fMRI functional connectomics</article-title>. <source>Neuron</source> <volume>91</volume>, <fpage>511</fpage>&#x02013;<lpage>528</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuron.2016.07.031</pub-id><pub-id pub-id-type="pmid">27497220</pub-id></citation>
</ref>
<ref id="B33">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Minati</surname> <given-names>L.</given-names></name> <name><surname>Zac&#x000E0;</surname> <given-names>D.</given-names></name> <name><surname>D&#x00027;Incerti</surname> <given-names>L.</given-names></name> <name><surname>Jovicich</surname> <given-names>J.</given-names></name></person-group> (<year>2014</year>). <article-title>Fast computation of voxel-level brain connectivity maps from resting-state functional mri using l1-norm as approximation of pearson&#x00027;s temporal correlation: Proof-of-concept and example vector hardware implementation</article-title>. <source>Med. Eng. Phys.</source> <volume>36</volume>, <fpage>1212</fpage>&#x02013;<lpage>1217</lpage>. <pub-id pub-id-type="doi">10.1016/j.medengphy.2014.06.012</pub-id></citation>
</ref>
<ref id="B34">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mi&#x00161;i&#x00107;</surname> <given-names>B.</given-names></name> <name><surname>Sporns</surname> <given-names>O.</given-names></name></person-group> (<year>2016</year>). <article-title>From regions to connections and networks: new bridges between brain and behavior</article-title>. <source>Curr. Opin. Neurobiol.</source> <volume>40</volume>, <fpage>1</fpage>&#x02013;<lpage>7</lpage>. <pub-id pub-id-type="doi">10.1016/j.conb.2016.05.003</pub-id><pub-id pub-id-type="pmid">27209150</pub-id></citation>
</ref>
<ref id="B35">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nieminen</surname> <given-names>J.</given-names></name></person-group> (<year>1974</year>). <article-title>On the centrality in a graph</article-title>. <source>Scand. J. Psychol.</source> <volume>15</volume>, <fpage>332</fpage>&#x02013;<lpage>336</lpage>. <pub-id pub-id-type="doi">10.1111/j.1467-9450.1974.tb00598.x</pub-id><pub-id pub-id-type="pmid">4453827</pub-id></citation>
</ref>
<ref id="B36">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Pearson</surname> <given-names>K.</given-names></name></person-group> (<year>1900</year>). <article-title>Mathematical contributions to the theory of evolution. VII. on the correlation of characters not quantitatively measurable</article-title>. <source>Philos. Trans. R. Soc. Lond.</source> <volume>195</volume>, <fpage>1</fpage>&#x02013;<lpage>47</lpage>. <pub-id pub-id-type="doi">10.1098/rsta.1900.0022</pub-id></citation>
</ref>
<ref id="B37">
<citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Prokop</surname> <given-names>H.</given-names></name></person-group> (<year>1999</year>). <source>Cache-oblivious Algorithms</source>. MA thesis, <publisher-name>Massachusets Institute of Technology</publisher-name>, <publisher-loc>Cambridge, MA</publisher-loc>.</citation>
</ref>
<ref id="B38">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rocca</surname> <given-names>M. A.</given-names></name> <name><surname>Valsasina</surname> <given-names>P.</given-names></name> <name><surname>Meani</surname> <given-names>A.</given-names></name> <name><surname>Falini</surname> <given-names>A.</given-names></name> <name><surname>Comi</surname> <given-names>G.</given-names></name> <name><surname>Filippi</surname> <given-names>M.</given-names></name></person-group> (<year>2016</year>). <article-title>Impaired functional integration in multiple sclerosis: a graph theory study</article-title>. <source>Brain Struct. Funct.</source> <volume>221</volume>, <fpage>115</fpage>&#x02013;<lpage>131</lpage>. <pub-id pub-id-type="doi">10.1007/s00429-014-0896-4</pub-id><pub-id pub-id-type="pmid">25257603</pub-id></citation>
</ref>
<ref id="B39">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Salvador</surname> <given-names>R.</given-names></name> <name><surname>Suckling</surname> <given-names>J.</given-names></name> <name><surname>Coleman</surname> <given-names>M.</given-names></name> <name><surname>Pickard</surname> <given-names>J.</given-names></name> <name><surname>Menon</surname> <given-names>D.</given-names></name> <name><surname>Bullmore</surname> <given-names>E.</given-names></name></person-group> (<year>2005</year>). <article-title>Neurophysiological architecture of functional magnetic resonance images of human brain</article-title>. <source>Cereb. Cortex</source> <volume>15</volume>, <fpage>1332</fpage>&#x02013;<lpage>1342</lpage>. <pub-id pub-id-type="doi">10.1093/cercor/bhi016</pub-id><pub-id pub-id-type="pmid">15635061</pub-id></citation>
</ref>
<ref id="B40">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schaefer</surname> <given-names>A.</given-names></name> <name><surname>Burmann</surname> <given-names>I.</given-names></name> <name><surname>Regenthal</surname> <given-names>R.</given-names></name> <name><surname>Ar&#x000E9;lin</surname> <given-names>K.</given-names></name> <name><surname>Barth</surname> <given-names>C.</given-names></name> <name><surname>Pampel</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Serotonergic modulation of intrinsic functional connectivity</article-title>. <source>Current Biol.</source> <volume>24</volume>, <fpage>2314</fpage>&#x02013;<lpage>2318</lpage>. <pub-id pub-id-type="doi">10.1016/j.cub.2014.08.024</pub-id><pub-id pub-id-type="pmid">25242032</pub-id></citation>
</ref>
<ref id="B41">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Scheinost</surname> <given-names>D.</given-names></name> <name><surname>Benjamin</surname> <given-names>J.</given-names></name> <name><surname>Lacadie</surname> <given-names>C. M.</given-names></name> <name><surname>Vohr</surname> <given-names>B.</given-names></name> <name><surname>Schneider</surname> <given-names>K. C.</given-names></name> <name><surname>Ment</surname> <given-names>L. R.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>The intrinsic connectivity distribution: a novel contrast measure reflecting voxel level functional connectivity</article-title>. <source>NeuroImage</source> <volume>62</volume>, <fpage>1510</fpage>&#x02013;<lpage>1519</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2012.05.073</pub-id><pub-id pub-id-type="pmid">22659477</pub-id></citation>
</ref>
<ref id="B42">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schoonheim</surname> <given-names>M. M.</given-names></name> <name><surname>Hulst</surname> <given-names>H. E.</given-names></name> <name><surname>Landi</surname> <given-names>D.</given-names></name> <name><surname>Ciccarelli</surname> <given-names>O.</given-names></name> <name><surname>Roosendaal</surname> <given-names>S. D.</given-names></name> <name><surname>Sanz-Arigita</surname> <given-names>E. J.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>Gender-related differences in functional connectivity in multiple sclerosis</article-title>. <source>Multiple Sclerosis J.</source> <volume>18</volume>, <fpage>164</fpage>&#x02013;<lpage>173</lpage>. <pub-id pub-id-type="doi">10.1177/1352458511422245</pub-id><pub-id pub-id-type="pmid">21908484</pub-id></citation>
</ref>
<ref id="B43">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname> <given-names>S.</given-names></name> <name><surname>Miller</surname> <given-names>K.</given-names></name> <name><surname>Salimi-Khorshidi</surname> <given-names>G.</given-names></name> <name><surname>Webster</surname> <given-names>M.</given-names></name> <name><surname>Beckmann</surname> <given-names>C.</given-names></name> <name><surname>Nichols</surname> <given-names>T.</given-names></name> <etal/></person-group>. (<year>2011</year>). <article-title>Network modelling methods for fMRI</article-title>. <source>Neuroimage</source> <volume>54</volume>, <fpage>875</fpage>&#x02013;<lpage>891</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2010.08.063</pub-id><pub-id pub-id-type="pmid">20817103</pub-id></citation>
</ref>
<ref id="B44">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname> <given-names>S. M.</given-names></name> <name><surname>Hyv&#x000E4;rinen</surname> <given-names>A.</given-names></name> <name><surname>Varoquaux</surname> <given-names>G.</given-names></name> <name><surname>Miller</surname> <given-names>K. L.</given-names></name> <name><surname>Beckmann</surname> <given-names>C. F.</given-names></name></person-group> (<year>2014</year>). <article-title>Group-pca for very large fmri datasets</article-title>. <source>NeuroImage</source> <volume>101</volume>, <fpage>738</fpage>&#x02013;<lpage>749</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2014.07.051</pub-id><pub-id pub-id-type="pmid">25094018</pub-id></citation>
</ref>
<ref id="B45">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname> <given-names>S. M.</given-names></name> <name><surname>Vidaurre</surname> <given-names>D.</given-names></name> <name><surname>Beckmann</surname> <given-names>C. F.</given-names></name> <name><surname>Glasser</surname> <given-names>M. F.</given-names></name> <name><surname>Jenkinson</surname> <given-names>M.</given-names></name> <name><surname>Miller</surname> <given-names>K. L.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Functional connectomics from resting-state fMRI</article-title>. <source>Trends Cogn. Sci.</source> <volume>17</volume>, <fpage>666</fpage>&#x02013;<lpage>682</lpage>. <pub-id pub-id-type="doi">10.1016/j.tics.2013.09.016</pub-id><pub-id pub-id-type="pmid">24238796</pub-id></citation>
</ref>
<ref id="B46">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sporns</surname> <given-names>O.</given-names></name></person-group> (<year>2011</year>). <article-title>The human connectome: a complex network</article-title>. <source>Ann. N. Y. Acad. Sci.</source> <volume>1224</volume>, <fpage>109</fpage>&#x02013;<lpage>125</lpage>. <pub-id pub-id-type="doi">10.1111/j.1749-6632.2010.05888.x</pub-id><pub-id pub-id-type="pmid">21251014</pub-id></citation>
</ref>
<ref id="B47">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sporns</surname> <given-names>O.</given-names></name> <name><surname>Tononi</surname> <given-names>G.</given-names></name> <name><surname>K&#x000F6;tter</surname> <given-names>R.</given-names></name></person-group> (<year>2005</year>). <article-title>The human connectome: a structural description of the human brain</article-title>. <source>PLoS Comput. Biol.</source> <volume>1</volume>:<fpage>e42</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.0010042</pub-id><pub-id pub-id-type="pmid">16201007</pub-id></citation>
</ref>
<ref id="B48">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Stanley</surname> <given-names>M. L.</given-names></name> <name><surname>Moussa</surname> <given-names>M. N.</given-names></name> <name><surname>Paolini</surname> <given-names>B.</given-names></name> <name><surname>Lyday</surname> <given-names>R. G.</given-names></name> <name><surname>Burdette</surname> <given-names>J. H.</given-names></name> <name><surname>Laurienti</surname> <given-names>P. J.</given-names></name></person-group> (<year>2013</year>). <article-title>Defining nodes in complex brain networks</article-title>. <source>Front. Comput. Neurosci.</source> <volume>7</volume>:<fpage>169</fpage>. <pub-id pub-id-type="doi">10.3389/fncom.2013.00169</pub-id><pub-id pub-id-type="pmid">24319426</pub-id></citation>
</ref>
<ref id="B49">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Suo</surname> <given-names>X.</given-names></name> <name><surname>Lei</surname> <given-names>D.</given-names></name> <name><surname>Li</surname> <given-names>K.</given-names></name> <name><surname>Chen</surname> <given-names>F.</given-names></name> <name><surname>Li</surname> <given-names>F.</given-names></name> <name><surname>Li</surname> <given-names>L.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Disrupted brain network topology in pediatric posttraumatic stress disorder: a resting-state fMRI study</article-title>. <source>Hum. Brain Mapp.</source> <volume>36</volume>, <fpage>3677</fpage>&#x02013;<lpage>3686</lpage>. <pub-id pub-id-type="doi">10.1002/hbm.22871</pub-id><pub-id pub-id-type="pmid">26096541</pub-id></citation>
</ref>
<ref id="B50">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Supekar</surname> <given-names>K.</given-names></name> <name><surname>Menon</surname> <given-names>V.</given-names></name> <name><surname>Rubin</surname> <given-names>D.</given-names></name> <name><surname>Musen</surname> <given-names>M.</given-names></name> <name><surname>Greicius</surname> <given-names>M. D.</given-names></name></person-group> (<year>2008</year>). <article-title>Network analysis of intrinsic functional brain connectivity in alzheimer&#x00027;s disease</article-title>. <source>PLoS Comput. Biol.</source> <volume>4</volume>:<fpage>e1000100</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.1000100</pub-id><pub-id pub-id-type="pmid">18584043</pub-id></citation>
</ref>
<ref id="B51">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Supekar</surname> <given-names>K.</given-names></name> <name><surname>Musen</surname> <given-names>M.</given-names></name> <name><surname>Menon</surname> <given-names>V.</given-names></name></person-group> (<year>2009</year>). <article-title>Development of large-scale functional brain networks in children</article-title>. <source>PLoS Biol.</source> <volume>7</volume>:<fpage>e1000157</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pbio.1000157</pub-id><pub-id pub-id-type="pmid">19621066</pub-id></citation>
</ref>
<ref id="B52">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tomasi</surname> <given-names>D.</given-names></name> <name><surname>Volkow</surname> <given-names>N.</given-names></name></person-group> (<year>2010</year>). <article-title>Functional connectivity density mapping</article-title>. <source>Proc. Natl. Acad. Sci. U.S.A.</source> <volume>107</volume>:<fpage>9885</fpage>. <pub-id pub-id-type="doi">10.1073/pnas.1001414107</pub-id><pub-id pub-id-type="pmid">20457896</pub-id></citation>
</ref>
<ref id="B53">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tomasi</surname> <given-names>D.</given-names></name> <name><surname>Volkow</surname> <given-names>N.</given-names></name></person-group> (<year>2011</year>). <article-title>Functional connectivity hubs in the human brain</article-title>. <source>Neuroimage</source> <volume>57</volume>, <fpage>908</fpage>&#x02013;<lpage>917</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2011.05.024</pub-id><pub-id pub-id-type="pmid">21609769</pub-id></citation>
</ref>
<ref id="B54">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tomasi</surname> <given-names>D.</given-names></name> <name><surname>Volkow</surname> <given-names>N. D.</given-names></name></person-group> (<year>2012</year>). <article-title>Aging and functional brain networks</article-title>. <source>Mol. Psychiatry</source> <volume>17</volume>, <fpage>549</fpage>&#x02013;<lpage>558</lpage>. <pub-id pub-id-type="doi">10.1038/mp.2011.81</pub-id><pub-id pub-id-type="pmid">21727896</pub-id></citation>
</ref>
<ref id="B55">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Valencia</surname> <given-names>M.</given-names></name> <name><surname>Pastor</surname> <given-names>M.</given-names></name> <name><surname>Fern&#x000E1;ndez-Seara</surname> <given-names>M.</given-names></name> <name><surname>Artieda</surname> <given-names>J.</given-names></name> <name><surname>Martinerie</surname> <given-names>J.</given-names></name> <name><surname>Chavez</surname> <given-names>M.</given-names></name></person-group> (<year>2009</year>). <article-title>Complex modular structure of large-scale brain networks</article-title>. <source>Chaos</source> <volume>19</volume>, <fpage>023119</fpage>&#x02013;<lpage>023119</lpage>. <pub-id pub-id-type="doi">10.1063/1.3129783</pub-id><pub-id pub-id-type="pmid">19566254</pub-id></citation>
</ref>
<ref id="B56">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>van den Heuvel</surname> <given-names>M.</given-names></name> <name><surname>Stam</surname> <given-names>C.</given-names></name> <name><surname>Boersma</surname> <given-names>M.</given-names></name> <name><surname>Hulshoff Pol</surname> <given-names>H.</given-names></name></person-group> (<year>2008</year>). <article-title>Small-world and scale-free organization of voxel-based resting-state functional connectivity in the human brain</article-title>. <source>Neuroimage</source> <volume>43</volume>, <fpage>528</fpage>&#x02013;<lpage>539</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2008.08.010</pub-id><pub-id pub-id-type="pmid">18786642</pub-id></citation>
</ref>
<ref id="B57">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>van den Heuvel</surname> <given-names>M. P.</given-names></name> <name><surname>Sporns</surname> <given-names>O.</given-names></name></person-group> (<year>2013</year>). <article-title>Network hubs in the human brain</article-title>. <source>Trends Cogn. Sci.</source> <volume>17</volume>, <fpage>683</fpage>&#x02013;<lpage>696</lpage>. <pub-id pub-id-type="doi">10.1016/j.tics.2013.09.012</pub-id><pub-id pub-id-type="pmid">24231140</pub-id></citation>
</ref>
<ref id="B58">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Van Essen</surname> <given-names>D.</given-names></name> <name><surname>Ugurbil</surname> <given-names>K.</given-names></name></person-group> (<year>2012</year>). <article-title>The future of the human connectome</article-title>. <source>Neuroimage</source> <volume>62</volume>, <fpage>1299</fpage>&#x02013;<lpage>1310</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2012.01.032</pub-id><pub-id pub-id-type="pmid">22245355</pub-id></citation>
</ref>
<ref id="B59">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Varoquaux</surname> <given-names>G.</given-names></name> <name><surname>Craddock</surname> <given-names>R. C.</given-names></name></person-group> (<year>2013</year>). <article-title>Learning and comparing functional connectomes across subjects</article-title>. <source>NeuroImage</source> <volume>80</volume>, <fpage>405</fpage>&#x02013;<lpage>415</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuroimage.2013.04.007</pub-id><pub-id pub-id-type="pmid">23583357</pub-id></citation>
</ref>
<ref id="B60">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>J.</given-names></name> <name><surname>Zuo</surname> <given-names>X.</given-names></name> <name><surname>He</surname> <given-names>Y.</given-names></name></person-group> (<year>2010</year>). <article-title>Graph-based network analysis of resting-state functional MRI</article-title>. <source>Front. Syst. Neurosci.</source> <volume>4</volume>:<fpage>16</fpage>. <pub-id pub-id-type="doi">10.3389/fnsys.2010.00016</pub-id><pub-id pub-id-type="pmid">20589099</pub-id></citation>
</ref>
<ref id="B61">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>Y.</given-names></name> <name><surname>Anderson</surname> <given-names>M. J.</given-names></name> <name><surname>Cohen</surname> <given-names>J. D.</given-names></name> <name><surname>Heinecke</surname> <given-names>A.</given-names></name> <name><surname>Li</surname> <given-names>K.</given-names></name> <name><surname>Satish</surname> <given-names>N.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Full correlation matrix analysis of fmri data on Intel&#x000AE; Xeon Phi&#x02122; coprocessors</article-title>, in <source>Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis</source> (<publisher-loc>New York, NY</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>23</fpage>. <pub-id pub-id-type="doi">10.1145/2807591.2807631</pub-id>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://dl.acm.org/citation.cfm?id=2807631">http://dl.acm.org/citation.cfm?id=2807631</ext-link></citation>
</ref>
<ref id="B62">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>Y.</given-names></name> <name><surname>Du</surname> <given-names>H.</given-names></name> <name><surname>Xia</surname> <given-names>M.</given-names></name> <name><surname>Ren</surname> <given-names>L.</given-names></name> <name><surname>Xu</surname> <given-names>M.</given-names></name> <name><surname>Xie</surname> <given-names>T.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>A hybrid cpu-gpu accelerated framework for fast mapping of high-resolution human brain connectome</article-title>. <source>PLoS ONE</source> <volume>8</volume>:<fpage>e62789</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0062789</pub-id><pub-id pub-id-type="pmid">23675425</pub-id></citation>
</ref>
<ref id="B63">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wink</surname> <given-names>A. M.</given-names></name> <name><surname>de Munck</surname> <given-names>J. C.</given-names></name> <name><surname>van der Werf</surname> <given-names>Y. D.</given-names></name> <name><surname>van den Heuvel</surname> <given-names>O. A.</given-names></name> <name><surname>Barkhof</surname> <given-names>F.</given-names></name></person-group> (<year>2012</year>). <article-title>Fast eigenvector centrality mapping of voxel-wise connectivity in functional magnetic resonance imaging: implementation, validation, and interpretation</article-title>. <source>Brain Connect.</source> <volume>2</volume>, <fpage>265</fpage>&#x02013;<lpage>274</lpage>. <pub-id pub-id-type="doi">10.1089/brain.2012.0087</pub-id><pub-id pub-id-type="pmid">23016836</pub-id></citation>
</ref>
<ref id="B64">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>T.</given-names></name> <name><surname>Yang</surname> <given-names>Z.</given-names></name> <name><surname>Jiang</surname> <given-names>L.</given-names></name> <name><surname>Xing</surname> <given-names>X.-X.</given-names></name> <name><surname>Zuo</surname> <given-names>X.-N.</given-names></name></person-group> (<year>2015</year>). <article-title>A connectome computation system for discovery science of brain</article-title>. <source>Sci. Bull.</source> <volume>60</volume>, <fpage>86</fpage>&#x02013;<lpage>95</lpage>. <pub-id pub-id-type="doi">10.1007/s11434-014-0698-3</pub-id></citation>
</ref>
<ref id="B65">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zalesky</surname> <given-names>A.</given-names></name> <name><surname>Fornito</surname> <given-names>A.</given-names></name> <name><surname>Cocchi</surname> <given-names>L.</given-names></name> <name><surname>Gollo</surname> <given-names>L. L.</given-names></name> <name><surname>Breakspear</surname> <given-names>M.</given-names></name></person-group> (<year>2014</year>). <article-title>Time-resolved resting-state brain networks</article-title>. <source>Proc. Natl. Acad. Sci. U.S.A.</source> <volume>111</volume>, <fpage>10341</fpage>&#x02013;<lpage>10346</lpage>. <pub-id pub-id-type="doi">10.1073/pnas.1400181111</pub-id><pub-id pub-id-type="pmid">24982140</pub-id></citation>
</ref>
<ref id="B66">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zuo</surname> <given-names>X.</given-names></name> <name><surname>Ehmke</surname> <given-names>R.</given-names></name> <name><surname>Mennes</surname> <given-names>M.</given-names></name> <name><surname>Imperati</surname> <given-names>D.</given-names></name> <name><surname>Castellanos</surname> <given-names>F.</given-names></name> <name><surname>Sporns</surname> <given-names>O.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>Network centrality in the human functional connectome</article-title>. <source>Cereb. Cortex</source> <volume>22</volume>, <fpage>1862</fpage>&#x02013;<lpage>1875</lpage>. <pub-id pub-id-type="doi">10.1093/cercor/bhr269</pub-id><pub-id pub-id-type="pmid">21968567</pub-id></citation>
</ref>
<ref id="B67">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zuo</surname> <given-names>X.-N.</given-names></name> <name><surname>Xing</surname> <given-names>X.-X.</given-names></name></person-group> (<year>2014</year>). <article-title>Test-retest reliabilities of resting-state fMRI measurements in human brain functional connectomics: a systems neuroscience perspective</article-title>. <source>Neurosci. Biobehav. Rev.</source> <volume>45</volume>, <fpage>100</fpage>&#x02013;<lpage>118</lpage>. <pub-id pub-id-type="doi">10.1016/j.neubiorev.2014.05.009</pub-id><pub-id pub-id-type="pmid">24875392</pub-id></citation>
</ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup>A single instruction can be applied to multiple data in parallel using CPU instruction set extensions such as SSE2 (Streaming SIMD Extensions, version 2) or AVX (Avanced Vector eXtensions).</p></fn>
<fn id="fn0002"><p><sup>2</sup>The symbol &#x003C1; was chosen because the functional connectivity estimates that are used here, <italic>r</italic> and <italic>r</italic><sub><italic>t</italic></sub>, are, in fact, correlation estimates (estimating a hypothetical population correlation &#x003C1;). This involves the simplistic assumption of time series stationarity (Hutchison et al., <xref ref-type="bibr" rid="B21">2013</xref>; Zalesky et al., <xref ref-type="bibr" rid="B65">2014</xref>) of the involved time series and also the assumption of bivariate normality between every two time series (Hlinka et al., <xref ref-type="bibr" rid="B20">2011</xref>).</p></fn>
<fn id="fn0003"><p><sup>3</sup><ext-link ext-link-type="uri" xlink:href="http://www.kristianloewe.com/software">http://www.kristianloewe.com/software</ext-link> and <ext-link ext-link-type="uri" xlink:href="https://github.com/kloewe/conan">https://github.com/kloewe/conan</ext-link>.</p></fn>
<fn id="fn0004"><p><sup>4</sup><ext-link ext-link-type="uri" xlink:href="http://www.mathworks.com/matlabcentral/fileexchange/32553-ipn-voxelgraph">http://www.mathworks.com/matlabcentral/fileexchange/32553-ipn-voxelgraph</ext-link>.</p></fn>
<fn id="fn0005"><p><sup>5</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/zuoxinian/CCS">https://github.com/zuoxinian/CCS</ext-link>.</p></fn>
<fn id="fn0006"><p><sup>6</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/kloewe/util-m">https://github.com/kloewe/util-m</ext-link>.</p></fn>
<fn id="fn0007"><p><sup>7</sup><ext-link ext-link-type="uri" xlink:href="http://www.mathworks.com/matlabcentral/fileexchange/32553-ipn-voxelgraph">http://www.mathworks.com/matlabcentral/fileexchange/32553-ipn-voxelgraph</ext-link>.</p></fn>
</fn-group>
</back>
</article>
