% command to run this on the terminal is lualatex -shell-escape Pictogram_Sleep_Regulation.tex
% requires pgfplots
\pdfpxdimen=1in
\divide\pdfpxdimen by 600
\documentclass[10pt]{standalone}
\usepackage{tikz}
%has to be compiled with ``lualatex -shell-escape Pictogram_Sleep_Regulation.tex''
\usetikzlibrary{external, positioning, backgrounds, arrows.meta, decorations.pathmorphing, calc}
% set up externalization
% WARNING the name of the Image CANNOT be the same as the tex file
\tikzsetnextfilename{Pictogram_SR}
\tikzset{external/system call={lualatex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource";
convert -density 600 -compress LZW "\image".pdf -flatten -alpha off -colorspace RGB -depth 8 "\image".tif;
convert -density 600 "\image".tif "\image".jpg;}}
\tikzexternalize
\begin{document}
\begin{tikzpicture}[
s/.style = {shorten >=1pt},
every loop/.style={thick,shorten >=1pt},
every path/.style={thick},
pop/.style = {rectangle, draw, text width=10em, text centered, minimum height=3em, rounded corners=3mm},
noise/.style = {decorate, decoration={zigzag},-{Circle[fill=blue!30]}, s},
Ex/.style = {rounded corners, s, -{Circle[fill=blue!30]}},
In/.style = {rounded corners, s, -|},
ExSR/.style = {rounded corners, s, -{Circle}},
]
% Cortex populations
\node (ex) at (0,0) [pop, fill=blue!30] {Pyramidal (p)};
\node (in) at (6,0) [pop, fill=yellow!30] {Inhibitory (i)};
% Sleep regulation populations
\node (WAKE) at (0,-4.25) [pop, fill=green] {\textbf{Wake} ($W$)};
\node (NREM) at (6,-4.25) [pop, fill=orange] {\textbf{NREM} ($N$)};
\node (REM) at (3,-2) [pop, fill=blue] {\textbf{REM} ($R$)};
% Connections within cortex
\draw
( ex) edge [Ex, loop above] node[below left, xshift = -0.4em] {$N_{pp}$} ( ex)
([yshift= 0.2cm] ex.east) edge [Ex] node[above] {$N_{ip}$} ([yshift= 0.2cm]in.west)
([yshift=-0.2cm] in.west) edge [In] node[below] {$N_{pi}$} ([yshift=-0.2cm]ex.east)
( in) edge [In, loop above] node[below left, xshift = -0.4em] {$N_{ii}$} ( in)
(0.5,1.22) edge [noise] node[right] {$\phi_n$} ([xshift= 0.5cm]ex.north)
(6.5,1.22) edge [noise] node[right] {$\phi^{'}_n$} ([xshift= 0.5cm]in.north);
% Connections within sleep regulation
\draw[ExSR]
([yshift=-0.3cm] REM.west) -- (0.3,-2.3)
-- node (N3){} ([xshift= 0.3cm] WAKE.north)
( REM) edge[s,loop below,-{Circle}]node (N2){} ( REM);
\draw[In]
( WAKE.north) -- node[left] (N0) {$g_{ER}$} (0.0,-2.)
-- ( REM.west);
\draw[In]
( NREM.north) -- node (N1) {} (6,-2)
-- ( REM.east);
\draw[In]
([yshift= 0.2cm] WAKE.east) -- node[above] {$g_{EN}$} ([yshift= 0.2cm] NREM.west);
\draw[In]
([yshift=-0.2cm] NREM.west) -- node[below] {$g_{GW}$} ([yshift=-0.2cm] WAKE.east);
% Place labels based on relative coordinates
\draw let \p1 = (N0), \p2 = (N1), \p3 = (N2), \p4 = (N3)
in node[right, xshift = 0.4em] at (\x3,\y1) {$g_{AR}$}
node[right] at (\x4,\y1) {$g_{AW}$}
node[left] at (\x2,\y1) {$g_{GR}$};
% The interaction between SRN and cortex
\draw[orange, dashed, rounded corners, -{Triangle}]
([xshift= 0.3cm] NREM.north) -- (6.3, -1.2)
-- (0.9, -1.2)
-- node[right] (C1) {$C_{G}$} ([xshift= 0.9cm] ex.south);
\draw[blue, dashed, rounded corners, -{Triangle}]
([yshift= 0.3cm] REM.west) -- ( 0.0,-1.7)
-- node[right] (C2) {} (ex.south);
\draw[green, dashed, rounded corners, -{Triangle}]
([xshift=-0.9cm] WAKE.north) -- node[right] (C3) {} ([xshift=-0.9cm]ex.south);
% Place labels based on relative coordinates
\draw let \p1 = (C1), \p2 = (C2), \p3 = (C3)
in node[right, blue] at (\x2,\y1) {$C_{A}$}
node[right, green] at (\x3,\y1) {$C_{E}$};
\end{tikzpicture}
\end{document}