|
| 1 | +\documentclass[border=2pt]{standalone} |
| 2 | +\usepackage[utf8]{inputenc} % Required for inserting images |
| 3 | +\usepackage{tikz} |
| 4 | +\usepackage{helvet} |
| 5 | +\usetikzlibrary{shapes.geometric, arrows} |
| 6 | +\pagecolor{white} |
| 7 | + |
| 8 | +%-------------------------defining colorblind friendly colors |
| 9 | +% Using pale color scheme in Figure 6 |
| 10 | +% by Paul Tol https://personal.sron.nl/~pault/ |
| 11 | +\definecolor{cbblue}{HTML}{BBCCEE} |
| 12 | +\definecolor{cbcyan}{HTML}{CCEEFF} |
| 13 | +\definecolor{cbgreen}{HTML}{CCDDAA} |
| 14 | +\definecolor{cbyellow}{HTML}{EEEEBB} |
| 15 | +\definecolor{cbred}{HTML}{FFCCCC} |
| 16 | +\definecolor{cbgrey}{HTML}{DDDDDD} |
| 17 | + |
| 18 | +% -------------------------defining nodes |
| 19 | +\tikzstyle{input} = [trapezium, trapezium left angle =80, trapezium right angle = 100, |
| 20 | +minimum width= 3cm, minimum height=0.5cm, text centered, draw=black, fill=cbblue] |
| 21 | +\tikzstyle{process} = [rectangle, minimum width = 3cm, minimum height = 1cm, |
| 22 | +text centered, , text width=4cm,draw=black, fill=cbgrey] |
| 23 | +\tikzstyle{decision} = [diamond, minimum width = 3cm, minimum height = 1cm, |
| 24 | +text centered, , text width=3.5cm, draw=black, fill=cbcyan] |
| 25 | +\tikzstyle{changeclass} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm, |
| 26 | +text centered, draw = black, fill=cbyellow] |
| 27 | +\tikzstyle{reject} = [trapezium, trapezium left angle =80, trapezium right angle = 100, |
| 28 | +minimum width= 1cm, minimum height=0.5cm, text centered, draw=black, fill=cbred] |
| 29 | +\tikzstyle{accept} = [trapezium, trapezium left angle =80, trapezium right angle = 100, |
| 30 | +minimum width= 1cm, minimum height=0.5cm, text centered, draw=black, fill=cbgreen] |
| 31 | + |
| 32 | +% -------------------------defining connectors |
| 33 | +\tikzstyle{arrow} = [thick,->, >=stealth] |
| 34 | +\tikzstyle{line} = [thick,-,>=stealth] |
| 35 | +\begin{document} |
| 36 | + |
| 37 | +% ------------------------- tikz image (flow chart) |
| 38 | +\begin{tikzpicture}[node distance = 2cm] |
| 39 | + |
| 40 | +% ------------------------- nodes ------------------------- |
| 41 | + |
| 42 | +% ----- node: 0 |
| 43 | +\node(0)[input, label={90:\textbf{MEICA Decision Tree}}, label={180:$node\ 0$}] {Set all components to unclassified}; |
| 44 | +% ----- node: 1 |
| 45 | +\node(1)[decision, below of=0,label={180:$node\ 1$}, yshift=-1.0cm]{$\rho$ $>$ $\kappa$}; |
| 46 | +\node(rej0)[reject, right of=1, xshift=3cm, align=center]{Unlikely BOLD\\$\rightarrow$ Reject}; |
| 47 | +% ----- node: 2 |
| 48 | +\node(2)[decision, below of=1,label={180:$node\ 2$} ,label={[align=center] 315: voxel counts for signif fit\\of multi-echo data\\to $T_2$ or $S_0$ decay models}, yshift=-3.0cm]{$n \, FS_0 \, > \, n \, FT_2$ \& $n \,FT_2$ $>$ 0}; |
| 49 | +\node(rej1)[reject, right of=2, xshift=3cm, align=center]{Unlikely BOLD\\$\rightarrow$ Reject}; |
| 50 | +% ----- node: 3 |
| 51 | +\node(3)[process, below of=2, label={180:$node\ 3$}, label={[align=center] 315: varex: variance explained\\by each component}, yshift=-1.5cm]{Calculate median(varex) across all components}; |
| 52 | +% ----- node: 4 |
| 53 | +\node(4)[decision, below of=3,label={180:$node\ 4$},label={[align=center] 315:DICE overlap between $T_2$ or $S_0$\\decay models and ICA component\\peak clusters}, yshift=-1.5cm]{dice $FS_0$ $>$ dice $FT_2$ \& varex $>$ median(varex) |
| 54 | +}; |
| 55 | +\node(rej2)[reject, right of=4, xshift=3cm, align=center]{Unlikely BOLD\\$\rightarrow$ Reject}; |
| 56 | +% ----- node: 5 |
| 57 | +\node(5)[decision, below of=4,label={180:$node\ 5$}, label={[align=center] 315: $t-statistic$ of $FT_2$ values\\in component peak clusters vs\\peak voxels outside of clusters}, yshift=-3.5cm]{ $0 \, >$ signal-noise \& varex $>$ median(varex)}; |
| 58 | +\node(rej3)[reject, right of=5, xshift=3cm, align=center]{Unlikely BOLD\\$\rightarrow$ Reject}; |
| 59 | +% ----- node: 6 |
| 60 | +\node(6)[process, below of=5, label={180:$node\ 6$}, label={0: Uses all components}, yshift=-1.5cm]{Calculate $\kappa$ elbow}; |
| 61 | +% ----- node: 7 |
| 62 | +\node(7)[process, below of=6, label={180:$node\ 7$}, yshift=-0.0cm]{Identify and exclude $\leq$3 highest variance unclassified components from some $\rho$ elbow calculations}; |
| 63 | +% ----- node: 8 |
| 64 | +\node(8)[process, below of=7, label={180:$node\ 8$}, label={[align=center] 0: Uses all components and subset\\of unclassified components}]{Calculate $\rho$ elbow\\(kundu method)}; |
| 65 | +% ----- node: 9 |
| 66 | +\node(9)[decision, below of=8,label={180:$node\ 9$}, yshift=-1.5cm]{$\kappa \geq \kappa$ elbow}; |
| 67 | +\node(rej4)[changeclass, right of=9, xshift=3cm]{Provisional accept}; |
| 68 | +% ----- node: 10 |
| 69 | +\node(10)[decision, below of=9,label={180:$node\ 10$}, yshift=-3.0cm]{$\rho > \rho$ elbow }; |
| 70 | +\node(rej5)[changeclass, right of=10, xshift=3cm]{Unclassified}; |
| 71 | +% ----- node: 11 |
| 72 | +\node(11)[decision, below of=10, label={180:$node\ 11$}, yshift=-3.5cm]{ \textit{n} classified as $Provisional\ accept < 2$}; |
| 73 | +\node(rej6)[input, right of=11, xshift=4cm, align=center]{Rerun ICA, metric calcs,\\\& component selection.\\If max restarts reached,\\accept everything\\not already rejected}; |
| 74 | +% ----- node: 12 |
| 75 | +\node(12)[process, below of=11,label={180:$node\ 12$},label={0: $90^{th}$ percentile threshold}, yshift=-1.7cm]{Calculate upper varex on provionally accepted components}; |
| 76 | +% ----- node: 13 |
| 77 | +\node(13)[process, below of=12,label={180:$node\ 13$}, label={0: $25^{th}$ percentile threshold},]{Calculate lower varex on provionally accepted components}; |
| 78 | +% ----- node: 14 |
| 79 | +\node(14)[process, below of=13,label={180:$node\ 14$}, label={[align=center] 0:$\lceil 2:3 \rceil$ depending on the\\number of fMRI volumes}]{Calculate extend factor}; |
| 80 | +% ----- node: 15 |
| 81 | +\node(15)[process, below of=14,label={180:$node\ 15$},label={[align=center] 0: \textit{n} Provisional accept\\$*$ extend factor}]{Calculate max good mean metric rank}; |
| 82 | +% ----- node: 16 |
| 83 | +\node(16)[process, below of=15, label={180:$node\ 16$}, label={[align=center] 0: $\frac{(max-min \, \kappa) \, \div \kappa}{(max-min \, varex) \div varex}$}]{Calculate $\kappa$ ratio on provionally accepted components}; |
| 84 | +% ----- node: 17 |
| 85 | +\node(17)[decision, below of=16,label={180:$node\ 17$},label={315:variance \& mean metric rank are high}, yshift=-2.5cm]{mean metric rank $>$ max good mean metric rank \& varex$>$extend factor * upper varex}; |
| 86 | +\node(rej7)[reject, right of=17, xshift=4cm, align=center]{Less likely BOLD\\$\rightarrow$ Reject}; |
| 87 | +% ----- node: 18 |
| 88 | +\node(18)[decision, below of=17,label={180:$node\ 18$},label={[align=center] 315: Accept if remaining component\\is less likely to be BOLD,\\but varex is low \& not worth\\losing a degree of freedom for}, yshift=-4.5cm]{mean metric rank $>$ \textit{n} max good mean metric rank \& varex $\leq$ lower varex \& $\kappa$ $\leq \, \kappa$ elbow }; |
| 89 | +\node(rej8)[accept, right of=18, xshift=4cm, align=center]{Low variance\\$\rightarrow$ Accept}; |
| 90 | +% ----- node: 19 |
| 91 | +\node(19)[decision, below of=18,label={180:$node\ 19$},label={315: Nothing unclassified remains}, yshift=-4.0cm]{\textit{n} Unclassified $==0$}; |
| 92 | +\node(rej9)[accept, right of=19, xshift=3cm, align=center]{Provisional accept\\$\rightarrow$ Accept}; |
| 93 | +% ----- node: 20 |
| 94 | +\node(20)[process, below of=19, label={180:$node\ 20$},yshift=-2.0cm, label={[align=center] 315: \textit{n} accepted guess =\\$\frac{\sum(\kappa > \kappa\, elbow\, \&\, \rho > \rho\, elbow)+ \sum(\kappa > \kappa\, elbow)}{2}$}]{Calculate new mean metric ranks and \textit{n} accepted guess on remaining unclassified and provisionally accepted components}; |
| 95 | +% ----- node: 21 |
| 96 | +\node(21)[decision, below of=20,label={180:$node\ 21$}, yshift=-3.5cm]{new mean metric rank $>$ (\textit{n} accepted guess)/2 \& varex $\kappa$ ratio $>$ 2 entend factor \& varex $>$ 2 upper varex}; |
| 97 | +\node(rej10)[changeclass, right of=21, xshift=4cm, align=center]{Less likely BOLD\\$\rightarrow$ Provisional Reject}; |
| 98 | +% ----- node: 22 |
| 99 | +\node(22)[decision, below of=21,label={180:$node\ 22$}, yshift=-5cm]{new mean metric rank $>$ 0.9*\textit{n} accepted guess \& varex $>$ (lower varex * extend factor)}; |
| 100 | +\node(rej11)[changeclass, right of=22, xshift=4cm, align=center]{Less likely BOLD\\$\rightarrow$ Provisional Reject}; |
| 101 | +% ----- node: 23 |
| 102 | +\node(23)[process, below of=22,label={180:$node\ 23$}, label={[align=center] 220: $25^{th}$ percentile variance\\explained from remaining\\non-rejected components},yshift=-2cm]{Calculate new lower varex}; |
| 103 | +% ----- node: 24 |
| 104 | +\node(24)[decision, below of=23,label={180:$node\ 24$}, yshift=-2.5cm]{new mean metric rank $>$ \textit{n} accepted guess \& varex $>$ new lower varex}; |
| 105 | +\node(rej12)[accept, right of= 24, xshift=4cm, align=center]{Accept borderline\\$\rightarrow$Accept}; |
| 106 | +% ----- node: 25 |
| 107 | +\node(25)[decision, below of=24,label={180:$node\ 25$}, yshift=-3.5cm]{ $\kappa$ $>$ $\kappa$ elbow \& varex $>$ new lower varex}; |
| 108 | +\node(rej13)[accept, right of=25, xshift=3cm, align=center]{Accept borderline\\$\rightarrow$Accept}; |
| 109 | +% ----- node: 26 |
| 110 | +\node(26)[reject, below of=25,label={180:$node\ 26$}, yshift=-1cm, align=center]{Remaining Provisional Reject $\rightarrow$ Reject}; |
| 111 | +% ----- node: 27 |
| 112 | +\node(27)[accept, below of=26,label={180:$node\ 27$}, yshift=0.8cm, align=center]{Remaining Unclassified \& Provisional accept\\$\rightarrow$ Likely BOLD $\rightarrow$ Accept}; |
| 113 | + |
| 114 | +% ------------------------- connections ------------------------- |
| 115 | +% draw[x](origin)--node[anchor=position]{text}(destination); |
| 116 | +\draw[arrow](0)--(1); |
| 117 | +\draw[arrow](1)--(2); |
| 118 | +\draw[arrow](2)--(3); |
| 119 | +\draw[arrow](3)--(4); |
| 120 | +\draw[arrow](4)--(5); |
| 121 | +\draw[arrow](5)--(6); |
| 122 | +\draw[arrow](6)--(7); |
| 123 | +\draw[arrow](7)--(8); |
| 124 | +\draw[arrow](8)--(9); |
| 125 | +\draw[arrow](9)--(10); |
| 126 | +\draw[arrow](10)--(11); |
| 127 | +\draw[arrow](11)--(12); |
| 128 | +\draw[arrow](12)--(13); |
| 129 | +\draw[arrow](13)--(14); |
| 130 | +\draw[arrow](14)--(15); |
| 131 | +\draw[arrow](15)--(16); |
| 132 | +\draw[arrow](16)--(17); |
| 133 | +\draw[arrow](17)--(18); |
| 134 | +\draw[arrow](18)--(19); |
| 135 | +\draw[arrow](19)--(20); |
| 136 | +\draw[arrow](20)--(21); |
| 137 | +\draw[arrow](21)--(22); |
| 138 | +\draw[arrow](22)--(23); |
| 139 | +\draw[arrow](rej10)--(22); |
| 140 | +\draw[arrow](23)--(24); |
| 141 | +\draw[arrow](rej11)--(23); |
| 142 | +\draw[arrow](rej11)--(24); |
| 143 | +\draw[arrow](24)--(25); |
| 144 | +\draw[arrow](25)--(26); |
| 145 | +\draw[arrow](26)--(27); |
| 146 | +\draw[arrow](1)--node[anchor=south] {yes} (rej0); |
| 147 | +\draw[arrow](2)--node[anchor=south] {yes} (rej1); |
| 148 | +\draw[arrow](4)--node[anchor=south] {yes} (rej2); |
| 149 | +\draw[arrow](5)--node[anchor=south] {yes} (rej3); |
| 150 | +\draw[arrow](9)--node[anchor=south] {yes} (rej4); |
| 151 | +\draw[arrow](rej4)--(10); |
| 152 | +\draw[arrow](10)--node[anchor=south] {yes} (rej5); |
| 153 | +\draw[arrow](rej5)--(11); |
| 154 | +\draw[arrow](11)--node[anchor=south] {yes} (rej6); |
| 155 | +\draw[arrow](17)--node[anchor=south] {yes} (rej7); |
| 156 | +\draw[arrow](18)--node[anchor=south] {yes} (rej8); |
| 157 | +\draw[arrow](19)--node[anchor=south] {yes} (rej9); |
| 158 | +\draw[arrow](21)--node[anchor=south] {yes} (rej10); |
| 159 | +\draw[arrow](22)--node[anchor=south] {yes} (rej11); |
| 160 | +\draw[arrow](24)--node[anchor=south] {yes} (rej12); |
| 161 | +\draw[arrow](25)--node[anchor=south] {yes} (rej13); |
| 162 | +\end{tikzpicture} |
| 163 | +\end{document} |
0 commit comments