diff --git a/figures/bp_text.svg b/figures/bp_text.svg deleted file mode 100644 index a01d3c3..0000000 --- a/figures/bp_text.svg +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - 2025-12-04T11:19:40.776076 - image/svg+xml - - - Matplotlib v3.10.5, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/figures/envdb_text.svg b/figures/envdb_text.svg deleted file mode 100644 index 75f1d8b..0000000 --- a/figures/envdb_text.svg +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - 2025-11-28T11:59:15.345917 - image/svg+xml - - - Matplotlib v3.10.5, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/figures/fig_auditory_pathway.pdf b/figures/fig_auditory_pathway.pdf index ce5c9de..127e351 100644 Binary files a/figures/fig_auditory_pathway.pdf and b/figures/fig_auditory_pathway.pdf differ diff --git a/figures/fig_auditory_pathway.pdf_tex b/figures/fig_auditory_pathway.pdf_tex index e6ad53d..7a185f7 100644 --- a/figures/fig_auditory_pathway.pdf_tex +++ b/figures/fig_auditory_pathway.pdf_tex @@ -38,7 +38,7 @@ \newcommand*\fsize{\dimexpr\f@size pt\relax}% \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% \ifx\svgwidth\undefined% - \setlength{\unitlength}{577.50002648bp}% + \setlength{\unitlength}{571.46462135bp}% \ifx\svgscale\undefined% \relax% \else% @@ -50,9 +50,13 @@ \global\let\svgwidth\undefined% \global\let\svgscale\undefined% \makeatother% - \begin{picture}(1,0.83116878)% + \begin{picture}(1,1.09374992)% \lineheight{1}% \setlength\tabcolsep{0pt}% \put(0,0){\includegraphics[width=\unitlength,page=1]{fig_auditory_pathway.pdf}}% + \put(-0.00024567,0.30366142){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}d\end{tabular}}}}% + \put(0.31224402,0.61546301){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}c\end{tabular}}}}% + \put(-0.00104037,0.60909337){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}b\end{tabular}}}}% + \put(-0.00024664,1.07367802){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}a\end{tabular}}}}% \end{picture}% \endgroup% diff --git a/figures/fig_auditory_pathway.svg b/figures/fig_auditory_pathway.svg index 1a9fc1a..c511c4d 100644 --- a/figures/fig_auditory_pathway.svg +++ b/figures/fig_auditory_pathway.svg @@ -9,7 +9,7 @@ id="svg13708" xml:space="preserve" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" - sodipodi:docname="fig_auditory_pathway.svg" + sodipodi:docname="fig_auditory_pathway_new.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" @@ -25,26 +25,65 @@ inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="true" - inkscape:zoom="2.8284271" - inkscape:cx="274.35743" - inkscape:cy="381.83767" + inkscape:zoom="2" + inkscape:cx="208" + inkscape:cy="427" inkscape:window-width="3840" inkscape:window-height="2040" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="layer3" + inkscape:current-layer="g76395" showguides="true"> + width="17.811302" + height="11.132065" + style="stroke-width:6.04762;image-rendering:optimizeQuality" + xlink:href="neuron_titles_tympanum_text.svg" + id="image9050" + x="-360.97665" + y="120.05769" + inkscape:label="Tympanum" />dcba diff --git a/figures/fig_auditory_pathway_backup.svg b/figures/fig_auditory_pathway_backup.svg deleted file mode 100644 index 9ecbb59..0000000 --- a/figures/fig_auditory_pathway_backup.svg +++ /dev/null @@ -1,2067 +0,0 @@ - - - - diff --git a/figures/grasshopper_sketch_half.svg b/figures/grasshopper_sketch_half.svg deleted file mode 100644 index dd4eecd..0000000 --- a/figures/grasshopper_sketch_half.svg +++ /dev/null @@ -1,1066 +0,0 @@ - - - - diff --git a/figures/grasshopper_sketch_half_backup.svg b/figures/grasshopper_sketch_half_backup.svg deleted file mode 100644 index d347d60..0000000 --- a/figures/grasshopper_sketch_half_backup.svg +++ /dev/null @@ -1,510 +0,0 @@ - - - - diff --git a/figures/grasshopper_vnc_sketch_backup.svg b/figures/grasshopper_vnc_sketch_backup.svg deleted file mode 100644 index 912e3a9..0000000 --- a/figures/grasshopper_vnc_sketch_backup.svg +++ /dev/null @@ -1,1109 +0,0 @@ - - - - diff --git a/figures/adapt_text.svg b/figures/model_elements_adapt_text.svg similarity index 97% rename from figures/adapt_text.svg rename to figures/model_elements_adapt_text.svg index d512db2..d170105 100644 --- a/figures/adapt_text.svg +++ b/figures/model_elements_adapt_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:50.602685 + 2026-01-27T14:51:31.681854 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:53.457222 + 2026-01-27T14:51:33.056749 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/bi2_text.svg b/figures/model_elements_b2_text.svg similarity index 67% rename from figures/bi2_text.svg rename to figures/model_elements_b2_text.svg index e30bb1e..623add7 100644 --- a/figures/bi2_text.svg +++ b/figures/model_elements_b2_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:54.087592 + 2026-01-27T14:51:33.415687 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/bi3_text.svg b/figures/model_elements_b3_text.svg similarity index 69% rename from figures/bi3_text.svg rename to figures/model_elements_b3_text.svg index 03c844e..c7ec2d0 100644 --- a/figures/bi3_text.svg +++ b/figures/model_elements_b3_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:54.703726 + 2026-01-27T14:51:33.799768 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/conv1_text.svg b/figures/model_elements_c1_text.svg similarity index 94% rename from figures/conv1_text.svg rename to figures/model_elements_c1_text.svg index aa85b13..87bbc5e 100644 --- a/figures/conv1_text.svg +++ b/figures/model_elements_c1_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:51.310879 + 2026-01-27T14:51:32.024042 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:52.126335 + 2026-01-27T14:51:32.383863 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:52.814110 + 2026-01-27T14:51:32.745865 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:49.570246 + 2026-01-27T14:51:31.015991 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:55.300377 + 2026-01-27T14:51:34.137225 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/feat2_text.svg b/figures/model_elements_f2_text.svg similarity index 67% rename from figures/feat2_text.svg rename to figures/model_elements_f2_text.svg index 54d2dfb..82461b7 100644 --- a/figures/feat2_text.svg +++ b/figures/model_elements_f2_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:56.004595 + 2026-01-27T14:51:34.529916 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/feat3_text.svg b/figures/model_elements_f3_text.svg similarity index 69% rename from figures/feat3_text.svg rename to figures/model_elements_f3_text.svg index 3ab1748..6769ef3 100644 --- a/figures/feat3_text.svg +++ b/figures/model_elements_f3_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:56.839864 + 2026-01-27T14:51:34.824288 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - diff --git a/figures/filt_text.svg b/figures/model_elements_filt_text.svg similarity index 97% rename from figures/filt_text.svg rename to figures/model_elements_filt_text.svg index 3040fdb..862b3d3 100644 --- a/figures/filt_text.svg +++ b/figures/model_elements_filt_text.svg @@ -6,7 +6,7 @@ - 2025-11-28T10:15:48.030923 + 2026-01-27T14:51:30.422146 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-11-28T10:15:50.215534 + 2026-01-27T14:51:31.344903 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-02T17:55:21.687713 + 2026-01-27T14:51:35.199883 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:38.258505 + 2026-01-27T16:43:51.186553 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:41.333691 + 2026-01-27T16:43:52.674414 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:39.781980 + 2026-01-27T16:43:53.081625 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:40.118218 + 2026-01-27T16:43:53.474748 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:40.486083 + 2026-01-27T16:43:53.881749 image/svg+xml @@ -23,7 +23,7 @@ - + + + + + + + + 2026-01-27T16:43:52.170478 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/lp_text.svg b/figures/model_lines_lp_text.svg similarity index 96% rename from figures/lp_text.svg rename to figures/model_lines_lp_text.svg index 4cdb810..a9ed708 100644 --- a/figures/lp_text.svg +++ b/figures/model_lines_lp_text.svg @@ -6,7 +6,7 @@ - 2025-12-04T11:19:41.071198 + 2026-01-27T16:43:55.337831 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:41.615805 + 2026-01-27T16:43:54.283329 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:41.936104 + 2026-01-27T16:43:54.641859 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:42.222070 + 2026-01-27T16:43:54.985292 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:42.518866 + 2026-01-27T16:43:55.691337 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:42.854448 + 2026-01-27T16:43:56.042083 image/svg+xml @@ -23,7 +23,7 @@ - + - 2025-12-04T11:19:43.143567 + 2026-01-27T16:43:56.385274 image/svg+xml @@ -23,7 +23,7 @@ - + + + + + + + + 2026-01-27T14:15:10.324438 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/model_titles_bandpass_text.svg b/figures/model_titles_bandpass_text.svg new file mode 100644 index 0000000..8b8a83c --- /dev/null +++ b/figures/model_titles_bandpass_text.svg @@ -0,0 +1,389 @@ + + + + + + + + 2026-01-27T14:15:07.687852 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/model_titles_convolution_text.svg b/figures/model_titles_convolution_text.svg new file mode 100644 index 0000000..ef41547 --- /dev/null +++ b/figures/model_titles_convolution_text.svg @@ -0,0 +1,364 @@ + + + + + + + + 2026-01-27T14:15:10.986962 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/model_titles_envelope_text.svg b/figures/model_titles_envelope_text.svg new file mode 100644 index 0000000..8670f5f --- /dev/null +++ b/figures/model_titles_envelope_text.svg @@ -0,0 +1,365 @@ + + + + + + + + 2026-01-27T14:15:08.571240 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/integration_text.svg b/figures/model_titles_integration_text.svg similarity index 97% rename from figures/integration_text.svg rename to figures/model_titles_integration_text.svg index 4f1ae29..0cdec04 100644 --- a/figures/integration_text.svg +++ b/figures/model_titles_integration_text.svg @@ -1,12 +1,12 @@ - + - 2025-12-04T10:31:29.690725 + 2026-01-27T14:15:12.126216 image/svg+xml @@ -23,7 +23,7 @@ - + - + + + + + + + + 2026-01-27T14:15:09.270463 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/threshold_text.svg b/figures/model_titles_nonlinear_text.svg similarity index 97% rename from figures/threshold_text.svg rename to figures/model_titles_nonlinear_text.svg index d9336d2..faec874 100644 --- a/figures/threshold_text.svg +++ b/figures/model_titles_nonlinear_text.svg @@ -1,12 +1,12 @@ - + - 2025-12-04T10:31:29.291752 + 2026-01-27T14:15:11.619692 image/svg+xml @@ -23,7 +23,7 @@ - + - + - + - 2025-12-04T10:31:30.069736 + 2026-01-27T14:15:12.610908 image/svg+xml @@ -22,8 +22,8 @@ - - + + - - - - - - - - - - - - - - - - - - - + + + + + + + + - + + - + - 2025-12-04T10:31:28.947160 + 2026-01-27T11:35:59.346447 image/svg+xml @@ -22,205 +22,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + 2026-01-27T11:35:59.793705 + image/svg+xml + + + Matplotlib v3.10.5, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/interneurons_text.svg b/figures/neuron_titles_interneurons_text.svg similarity index 72% rename from figures/interneurons_text.svg rename to figures/neuron_titles_interneurons_text.svg index 72c3e85..7310479 100644 --- a/figures/interneurons_text.svg +++ b/figures/neuron_titles_interneurons_text.svg @@ -1,12 +1,12 @@ - + - 2025-12-04T10:31:28.555022 + 2026-01-27T11:35:58.937641 image/svg+xml @@ -23,7 +23,7 @@ - + - - + + + @@ -276,94 +305,7 @@ z - - - - - - - - - - - - - - - - - - + diff --git a/figures/receptors_text.svg b/figures/neuron_titles_receptors_text.svg similarity index 70% rename from figures/receptors_text.svg rename to figures/neuron_titles_receptors_text.svg index a50233a..0bc7646 100644 --- a/figures/receptors_text.svg +++ b/figures/neuron_titles_receptors_text.svg @@ -1,12 +1,12 @@ - + - 2025-12-04T10:31:28.187050 + 2026-01-27T11:35:58.499555 image/svg+xml @@ -23,7 +23,7 @@ - + - - + + + @@ -284,112 +313,7 @@ z - - - - - - - - - - - - - - - - - - - + diff --git a/figures/tympanum_text.svg b/figures/neuron_titles_tympanum_text.svg similarity index 96% rename from figures/tympanum_text.svg rename to figures/neuron_titles_tympanum_text.svg index 0b32cb4..adf674f 100644 --- a/figures/tympanum_text.svg +++ b/figures/neuron_titles_tympanum_text.svg @@ -1,12 +1,12 @@ - + - 2025-12-04T10:31:26.913649 + 2026-01-27T11:35:57.006877 image/svg+xml @@ -23,7 +23,7 @@ - + - + - - - diff --git a/figures/grasshopper_sketch_full.svg b/figures/sketch_grasshopper.svg similarity index 99% rename from figures/grasshopper_sketch_full.svg rename to figures/sketch_grasshopper.svg index 42e8d1e..8920f92 100644 --- a/figures/grasshopper_sketch_full.svg +++ b/figures/sketch_grasshopper.svg @@ -27,7 +27,7 @@ showgrid="false" inkscape:zoom="2.5877451" inkscape:cx="346.2474" - inkscape:cy="504.30006" + inkscape:cy="504.68649" inkscape:window-width="3840" inkscape:window-height="2040" inkscape:window-x="0" diff --git a/figures/grasshopper_vnc_sketch.svg b/figures/sketch_grasshopper_vnc.svg similarity index 100% rename from figures/grasshopper_vnc_sketch.svg rename to figures/sketch_grasshopper_vnc.svg diff --git a/figures/mttg_sketch.svg b/figures/sketch_mttg.svg similarity index 92% rename from figures/mttg_sketch.svg rename to figures/sketch_mttg.svg index d4c3041..389f1be 100644 --- a/figures/mttg_sketch.svg +++ b/figures/sketch_mttg.svg @@ -8,7 +8,7 @@ version="1.1" id="svg13953" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" - sodipodi:docname="mttg_sketch.svg" + sodipodi:docname="sketch_mttg.svg" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" @@ -25,9 +25,9 @@ inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="false" - inkscape:zoom="3.6596241" - inkscape:cx="305.76911" - inkscape:cy="621.9218" + inkscape:zoom="4" + inkscape:cx="406.375" + inkscape:cy="627" inkscape:window-width="3840" inkscape:window-height="2040" inkscape:window-x="0" @@ -36,17 +36,36 @@ inkscape:current-layer="layer2" /> + y="155.57292" /> diff --git a/figures/vnc_sketch.svg b/figures/sketch_vnc.svg similarity index 100% rename from figures/vnc_sketch.svg rename to figures/sketch_vnc.svg diff --git a/figures/thresh1_text.svg b/figures/thresh1_text.svg deleted file mode 100644 index 888359f..0000000 --- a/figures/thresh1_text.svg +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - 2025-12-04T11:19:43.495964 - image/svg+xml - - - Matplotlib v3.10.5, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/figures/thresh2_text.svg b/figures/thresh2_text.svg deleted file mode 100644 index 8b9316d..0000000 --- a/figures/thresh2_text.svg +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - 2025-12-04T11:19:43.783599 - image/svg+xml - - - Matplotlib v3.10.5, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/figures/thresh3_text.svg b/figures/thresh3_text.svg deleted file mode 100644 index 59c16d9..0000000 --- a/figures/thresh3_text.svg +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - 2025-12-04T11:19:44.183173 - image/svg+xml - - - Matplotlib v3.10.5, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/main.aux b/main.aux index 569099f..31a4879 100644 --- a/main.aux +++ b/main.aux @@ -177,18 +177,16 @@ \abx@aux@segm{0}{0}{windmill2008time} \abx@aux@cite{0}{malkin2014energy} \abx@aux@segm{0}{0}{malkin2014energy} -\abx@aux@cite{0}{machens2001discrimination} -\abx@aux@segm{0}{0}{machens2001discrimination} -\abx@aux@cite{0}{machens2001representation} -\abx@aux@segm{0}{0}{machens2001representation} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Grasshopper auditory system}}{6}{}\protected@file@percent } \newlabel{fig:pathway}{{1}{6}{}{}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Population-driven signal pre-processing}{6}{}\protected@file@percent } \abx@aux@page{57}{6} \abx@aux@page{58}{6} \abx@aux@page{59}{6} -\newlabel{eq:bandpass}{{1}{6}{}{}{}} -\abx@aux@page{60}{6} +\abx@aux@cite{0}{machens2001discrimination} +\abx@aux@segm{0}{0}{machens2001discrimination} +\abx@aux@cite{0}{machens2001representation} +\abx@aux@segm{0}{0}{machens2001representation} \abx@aux@cite{0}{suga1960peripheral} \abx@aux@segm{0}{0}{suga1960peripheral} \abx@aux@cite{0}{gollisch2002energy} @@ -199,6 +197,8 @@ \abx@aux@segm{0}{0}{clemens2010intensity} \abx@aux@cite{0}{fisch2012channel} \abx@aux@segm{0}{0}{fisch2012channel} +\newlabel{eq:bandpass}{{1}{7}{}{}{}} +\abx@aux@page{60}{7} \abx@aux@page{61}{7} \newlabel{eq:env}{{2}{7}{}{}{}} \abx@aux@page{62}{7} @@ -209,12 +209,12 @@ \abx@aux@page{66}{7} \newlabel{eq:highpass}{{4}{7}{}{}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Feature extraction by individual neurons}{7}{}\protected@file@percent } -\newlabel{eq:gabor}{{5}{7}{}{}{}} +\newlabel{eq:gabor}{{5}{8}{}{}{}} \newlabel{eq:conv}{{6}{8}{}{}{}} \newlabel{eq:binary}{{7}{8}{}{}{}} \newlabel{eq:lowpass}{{8}{8}{}{}{}} \@writefile{toc}{\contentsline {section}{\numberline {3}Two mechanisms driving the emergence of intensity-invariant song representation}{8}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Logarithmic scaling \& spike-frequency adaptation}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Logarithmic scaling \& spike-frequency adaptation}{9}{}\protected@file@percent } \newlabel{eq:toy_env}{{9}{9}{}{}{}} \newlabel{eq:toy_snr}{{10}{9}{}{}{}} \newlabel{eq:toy_log}{{11}{9}{}{}{}} diff --git a/main.fdb_latexmk b/main.fdb_latexmk index 017d40e..d228d6d 100644 --- a/main.fdb_latexmk +++ b/main.fdb_latexmk @@ -1,14 +1,14 @@ # Fdb version 4 -["biber main"] 1769180115.1045 "main.bcf" "main.bbl" "main" 1769181243.6132 0 +["biber main"] 1769180115.1045 "main.bcf" "main.bbl" "main" 1769615001.88746 0 "cite.bib" 1769161606.81515 26101 38c8b9abe5a195b02b3dc24d060fd93c "" - "main.bcf" 1769181243.57068 112422 0fe70177fbc50b685f20ce9d453017d9 "pdflatex" + "main.bcf" 1769615001.84707 112422 0fe70177fbc50b685f20ce9d453017d9 "pdflatex" (generated) "main.bbl" "main.blg" (rewritten before read) -["pdflatex"] 1769181242.88662 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1769181243.6134 0 +["pdflatex"] 1769615001.16149 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1769615001.88766 0 "/etc/texmf/web2c/texmf.cnf" 1761560044.43676 475 c0e671620eb5563b2130f56340a5fde8 "" - "/home/hartling/phd/paper/paper_2025/main.tex" 1769181242.02469 33086 a659f007ab32a7da536b212f027bd9fe "" + "/home/hartling/phd/paper/paper_2025/main.tex" 1769614999.58409 33086 a659f007ab32a7da536b212f027bd9fe "" "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 "" @@ -129,12 +129,12 @@ "/usr/share/texmf/web2c/texmf.cnf" 1707919699 40399 f2c302f7d2af602abb742093540a5834 "" "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1761648465.84635 5472669 54eaf61a88b6b7896ebd0dac973cb29c "" "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1761648508 8213325 7fd20752ab46ff9aa583e4973d7433df "" - "figures/fig_auditory_pathway.pdf" 1764926286.29522 997047 a3424a5b5dfa1dfb4f650bcde9c035bb "" - "figures/fig_auditory_pathway.pdf_tex" 1764926286.29622 2096 aa44b3485835aa1bb41439bee4b9c721 "" - "main.aux" 1769181243.56768 8995 27806759adbb8e49341b16241a957e86 "pdflatex" + "figures/fig_auditory_pathway.pdf" 1769614975.48831 1136413 41572fd2cb6c17146d6b2ae3cf707d0f "" + "figures/fig_auditory_pathway.pdf_tex" 1769614975.48931 2627 e59be60d00f025265c959a014b951af9 "" + "main.aux" 1769615001.84407 8995 3a17c8db27ae41ea6136ee1b25219fe1 "pdflatex" "main.bbl" 1769180115.75565 85985 770a017f2d3d3fc54e26790f2cf043b4 "biber main" - "main.run.xml" 1769181243.57168 2305 d0067550f22ade5b49f22d40cea22838 "pdflatex" - "main.tex" 1769181242.02469 33086 a659f007ab32a7da536b212f027bd9fe "" + "main.run.xml" 1769615001.84807 2305 d0067550f22ade5b49f22d40cea22838 "pdflatex" + "main.tex" 1769614999.58409 33086 a659f007ab32a7da536b212f027bd9fe "" (generated) "main.aux" "main.bcf" diff --git a/main.log b/main.log index 35b2b9c..8f6d0cc 100644 --- a/main.log +++ b/main.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2025.10.28) 23 JAN 2026 16:14 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2025.10.28) 28 JAN 2026 16:43 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -683,11 +683,11 @@ Overfull \hbox (13.04964pt too wide) in paragraph at lines 312--314 [] (./figures/fig_auditory_pathway.pdf_tex - + File: figures/fig_auditory_pathway.pdf Graphic file (type pdf) Package pdftex.def Info: figures/fig_auditory_pathway.pdf , page1 used on input line 56. -(pdftex.def) Requested size: 455.24411pt x 378.38292pt. +(pdftex.def) Requested size: 455.24411pt x 497.9249pt. ) [5] [6 <./figures/fig_auditory_pathway.pdf>] Overfull \hbox (40.4313pt too wide) in paragraph at lines 364--375 []\OT1/cmr/m/n/12 ) and, to a lesser ex-tent, the re-cep-tors them-selves ([]) @@ -716,10 +716,10 @@ Here is how much of TeX's memory you used: 1141 hyphenation exceptions out of 8191 94i,19n,93p,713b,992s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on main.pdf (12 pages, 1116241 bytes). +Output written on main.pdf (12 pages, 1256154 bytes). PDF statistics: - 1097 PDF objects out of 1200 (max. 8388607) - 696 compressed objects within 7 object streams + 1089 PDF objects out of 1200 (max. 8388607) + 690 compressed objects within 7 object streams 0 named destinations out of 1000 (max. 500000) 18 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/main.pdf b/main.pdf index 15d3c92..1245522 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.synctex.gz b/main.synctex.gz index 166bbdc..229708b 100644 Binary files a/main.synctex.gz and b/main.synctex.gz differ diff --git a/python/save_latex_texts.py b/python/save_latex_texts.py index 55ac689..dd6658c 100644 --- a/python/save_latex_texts.py +++ b/python/save_latex_texts.py @@ -8,9 +8,12 @@ plt.rcParams['svg.fonttype'] = 'path' plt.rc('text.latex', preamble=r'\usepackage{amsmath}') # Settings: -fs_chart = 70 -fs_lines = 75 -fs_legend = 40 +titles_fontsize = 50 +titles_figsize = (4, 2.5) +elements_fontsize = 80 +elements_figsize = (3, 3) +lines_fontsize = 80 +lines_figsize = (3, 3) show_figs = True grid_props = dict(left=0, right=1, top=1, bottom=0) @@ -35,51 +38,56 @@ text_props = { # Targets: texts = { - # CIRCUIT ELEMENTS: - # 'filt': (r'$x_{\text{filt}}$', fs_chart, (3, 3)), - # 'env': (r'$x_{\text{env}}$', fs_chart, (3, 3)), - # 'db': (r'$x_{\text{dB}}$', fs_chart, (3, 3)), - # 'envdb': (r'$\begin{array}{c}x_{\text{env}}\\x_{\text{dB}}\end{array}$', fs_chart, (3, 3)), - # 'adapt': (r'$x_{\text{adapt}}$', fs_chart, (3, 3)), - # 'conv1': (r'$c_1$', fs_chart, (3, 3)), - # 'conv2': (r'$c_2$', fs_chart, (3, 3)), - # 'conv3': (r'$c_3$', fs_chart, (3, 3)), - # 'bi1': (r'$b_{1, \Theta}$', fs_chart, (3, 3)), - # 'bi2': (r'$b_{2, \Theta}$', fs_chart, (3, 3)), - # 'bi3': (r'$b_{3, \Theta}$', fs_chart, (3, 3)), - # 'feat1': (r'$f_{1, \Theta}$', fs_chart, (3, 3)), - # 'feat2': (r'$f_{2, \Theta}$', fs_chart, (3, 3)), - # 'feat3': (r'$f_{3, \Theta}$', fs_chart, (3, 3)), - # 'out': (r'$\hat{y}$', fs_chart, (3, 3)), + # # TITLES (NEURONAL CIRCUIT): + # 'neuron_titles_tympanum': ('Tympanal\nMembrane', titles_fontsize, titles_figsize), + # 'neuron_titles_receptors': ('Receptor\nNeurons', titles_fontsize, titles_figsize), + # 'neuron_titles_interneurons': ('Local\nInterneurons', titles_fontsize, titles_figsize), + # 'neuron_titles_ascending': ('Ascending\nNeurons', titles_fontsize, titles_figsize), + # 'neuron_titles_brain': ('Central\nBrain', titles_fontsize, titles_figsize), - # CIRCUIT OPERATIONS: - 'rectlp': (r'$\lvert\cdot\lvert,h_{\text{LP}}$', fs_lines, (3, 3)), - 'log': (r'$\text{log}$', fs_lines, (3, 3)), - 'rectlplog': (r'$\begin{array}{c}||,h_{\text{LP}}\\\text{log}\end{array}$', fs_lines, (3, 3)), - 'k1': (r'$k_1$', fs_lines, (3, 3)), - 'k2': (r'$k_2$', fs_lines, (3, 3)), - 'k3': (r'$k_3$', fs_lines, (3, 3)), - 'bp': (r'$h_{\text{BP}}$', fs_lines, (3, 3)), - 'lp': (r'$h_{\text{LP}}$', fs_lines, (3, 3)), - 'hp': (r'$h_{\text{HP}}$', fs_lines, (3, 3)), - 'theta1': (r'$\Theta_1$', fs_lines, (3, 3)), - 'theta2': (r'$\Theta_2$', fs_lines, (3, 3)), - 'theta3': (r'$\Theta_3$', fs_lines, (3, 3)), - 'w1': (r'$\omega_1$', fs_lines, (3, 3)), - 'w2': (r'$\omega_2$', fs_lines, (3, 3)), - 'w3': (r'$\omega_3$', fs_lines, (3, 3)), - 'thresh1': (r'$H(c_1-\Theta_1)$', fs_lines, (3, 3)), - 'thresh2': (r'$H(c_2-\Theta_2)$', fs_lines, (3, 3)), - 'thresh3': (r'$H(c_3-\Theta_3)$', fs_lines, (3, 3)), + # # TITLES (MODEL CIRCUIT): + # 'model_titles_bandpass': ('Bandpass\nFiltering', titles_fontsize, titles_figsize), + # 'model_titles_envelope': ('Envelope\nExtraction', titles_fontsize, titles_figsize), + # 'model_titles_logarithm': ('Logarithmic\nCompression', titles_fontsize, titles_figsize), + # 'model_titles_adaptation': ('Intensity\nAdaptation', titles_fontsize, titles_figsize), + # 'model_titles_convolution': ('Convolutional\nFiltering', titles_fontsize, titles_figsize), + # 'model_titles_nonlinear': ('Threshold\nNonlinearity', titles_fontsize, titles_figsize), + # 'model_titles_integration': ('Temporal\nAveraging', titles_fontsize, titles_figsize), + # 'model_titles_readout': ('Weighted\nReadout', titles_fontsize, titles_figsize), - # LEGEND ELEMENTS: - # 'tympanum': ('Tympanal\nMembrane', fs_legend, (3, 3)), - # 'receptors': ('Receptor\nNeuron\nPopulation', fs_legend, (3, 3)), - # 'interneurons': ('Local\nInterneuron\nPopulation', fs_legend, (3, 3)), - # 'ascending': ('Individual\nAscending\nNeurons', fs_legend, (3, 3)), - # 'threshold': ('Threshold\nNonlinearity', fs_legend, (3, 3)), - # 'integration': ('Temporal\nAveraging', fs_legend, (3, 3)), - # 'brain': ('Weighting\nand\nReadout', fs_legend, (3, 3)), + # # ELEMENT LABELS (MODEL CIRCUIT): + # 'model_elements_filt': (r'$x_{\text{filt}}$', elements_fontsize, elements_figsize), + # 'model_elements_env': (r'$x_{\text{env}}$', elements_fontsize, elements_figsize), + # 'model_elements_log': (r'$x_{\text{dB}}$', elements_fontsize, elements_figsize), + # 'model_elements_adapt': (r'$x_{\text{adapt}}$', elements_fontsize, elements_figsize), + # 'model_elements_c1': (r'$c_1$', elements_fontsize, elements_figsize), + # 'model_elements_c2': (r'$c_2$', elements_fontsize, elements_figsize), + # 'model_elements_c3': (r'$c_3$', elements_fontsize, elements_figsize), + # 'model_elements_b1': (r'$b_1$', elements_fontsize, elements_figsize), + # 'model_elements_b2': (r'$b_2$', elements_fontsize, elements_figsize), + # 'model_elements_b3': (r'$b_3$', elements_fontsize, elements_figsize), + # 'model_elements_f1': (r'$f_1$', elements_fontsize, elements_figsize), + # 'model_elements_f2': (r'$f_2$', elements_fontsize, elements_figsize), + # 'model_elements_f3': (r'$f_3$', elements_fontsize, elements_figsize), + # 'model_elements_out': (r'$\hat{y}$', elements_fontsize, elements_figsize), + + # LINE LABELS (MODEL CIRCUIT): + 'model_lines_env': (r'$\lvert\cdot\lvert,h_{\text{LP}}$', lines_fontsize, lines_figsize), + 'model_lines_log': (r'$\text{log}$', lines_fontsize, lines_figsize), + 'model_lines_hp': (r'$h_{\text{HP}}$', lines_fontsize, lines_figsize), + 'model_lines_k1': (r'$k_1$', lines_fontsize, lines_figsize), + 'model_lines_k2': (r'$k_2$', lines_fontsize, lines_figsize), + 'model_lines_k3': (r'$k_3$', lines_fontsize, lines_figsize), + 'model_lines_t1': (r'$\Theta_1$', lines_fontsize, lines_figsize), + 'model_lines_t2': (r'$\Theta_2$', lines_fontsize, lines_figsize), + 'model_lines_t3': (r'$\Theta_3$', lines_fontsize, lines_figsize), + # 'model_lines_H1': (r'$H(c_1-\Theta_1)$', lines_fontsize, lines_figsize), + # 'model_lines_H2': (r'$H(c_2-\Theta_2)$', lines_fontsize, lines_figsize), + # 'model_lines_H3': (r'$H(c_3-\Theta_3)$', lines_fontsize, lines_figsize), + 'model_lines_lp': (r'$h_{\text{LP}}$', lines_fontsize, lines_figsize), + 'model_lines_w1': (r'$\omega_1$', lines_fontsize, lines_figsize), + 'model_lines_w2': (r'$\omega_2$', lines_fontsize, lines_figsize), + 'model_lines_w3': (r'$\omega_3$', lines_fontsize, lines_figsize), } # Save each target string: @@ -93,135 +101,3 @@ for name, (text, fs, size) in texts.items(): if show_figs: plt.show() plt.close(fig) - - - - -# def text_box(ax, text, xy, width, height, transform=None, -# ha='center', va='center', **kwargs): -# """ Maximizes fontsize of text to fit into a given bounding box. -# Calculated fontsize depends on the aspect ratio of the bounding box, -# the aspect ratio and alignment of the text, and the resolution and size -# of the underlying figure. Text is not updated when resizing the figure. - -# Parameters -# ---------- -# ax : matplotlib axes object -# Target subplot to annotate the text. -# text : str -# Text to fit into the specified bounding box under the given alignments. -# xy : tuple of floats or ints (2,) -# Text position in the coordinate system specified by transform. -# width : float or int -# Rectangle width in the coordinate system specified by transform. -# height : float or int -# Rectangle height in the coordinate system specified by transform. -# transform : matplotlib transform, optional -# Underlying coordinate system of the bounding box. Determines the -# interpretation of xy, width, and height. Falls back to data coordinates -# if unspecified. The default is None. -# ha : str, optional -# Horizontal alignment of bounding box and text relative to the given xy. -# The default is 'center'. -# va : str, optional -# Vertical alignment of bounding box and text relative to the given xy. -# The default is 'center'. -# **kwargs : dict, optional -# Additional keyword arguments passed to ax.annotate() for specifying -# different font properties of the returned text object. - -# Returns -# ------- -# t : matplotlib text object -# Annotated text object with adjusted fontsize to fit the bounding box. -# """ -# # Input interpretation: -# if transform is None: -# transform = ax.transData -# fig = ax.get_figure() -# x, y = xy -# # Alignment-specific anchor points: -# x_align1, x_align2 = { -# 'center': (x - width / 2, x + width / 2), -# 'left': (x, x + width), -# 'right': (x - width, x), -# }[ha] -# y_align1, y_align2 = { -# 'center': (y - height / 2, y + height / 2), -# 'bottom': (y, y + height), -# 'top': (y - height, y), -# }[va] -# # Anchor points in pixel: -# left_corner = transform.transform((x_align1, y_align1)) -# right_corner = transform.transform((x_align2, y_align2)) -# # Bounding rectangle size in pixel: -# pixel_width = right_corner[0] - left_corner[0] -# pixel_height = right_corner[1] - left_corner[1] -# # Adjust fontsize to box height (inch): -# dpi = fig.dpi -# rect_height = pixel_height / dpi -# fs_initial = rect_height * 72 -# # Plot first draft of the text: -# t = ax.annotate(text, xy, ha=ha, va=va, xycoords=transform, **kwargs) -# t.set_fontsize(fs_initial) -# # Adjust fontsize to box width (inch): -# bbox = t.get_window_extent(fig.canvas.get_renderer()) -# fs_adjusted = fs_initial * pixel_width / bbox.width -# t.set_fontsize(fs_adjusted) -# return t - - -# def text_graph(text, save_str=None, size=None, ax=None, show=False, -# close=False, **kwargs): -# """ Turns entire subplot into a text box that displays the given text. -# Fontsize is maximized to fit the available bounding box. Text is always -# centered in the subplot. Meant for creating scalable text elements that -# comply with the style of other plot elements, especially for posters. - -# Parameters -# ---------- -# text : str -# Text to be displayed. Can be multiline. Text fontsize is maximized by -# text_box() to fit a bounding box that covers the entire axes area. -# save_str : str, optional -# If specified, saves the underlying figure under the given path. For -# best results, use a vector format such as .svg). The default is None. -# size : tuple of floats or ints (2,), optional -# If specified, creates a new figure with given size in inches and a -# single subplot. Indirectly controls the aspect ratio of the text box. -# Must be specified if ax is None. The default is None. -# ax : matplotlib axes object, optional -# If specified, the target subplot to turn into a text box. Can be used -# to set more properties such as the background color of the text box. -# Must be specified if size is None. The default is None. -# show : bool, optional -# If True, displays the figure before returning. Else, returns without -# showing the figure. The default is False. -# **kwargs : dict, optional -# Keyword arguments passed to text_box() and further to ax.annotate() for -# specifying additional font properties of the displayed text. - -# Raises -# ------ -# ValueError -# Breaks if neither size nor ax is specified to define a target subplot. -# """ -# # Input interpretation: -# if size is not None: -# fig, ax = plt.subplots(figsize=size) -# elif ax is not None: -# fig = ax.get_figure() -# else: -# raise ValueError('Either size or ax must be specified.') -# # Turn drawable area of axes into a single text box: -# text_box(ax, text, (0.5, 0.5), 1, 1, ax.transAxes, **kwargs) -# # Hide other axes elements: -# ax.xaxis.set_visible(False) -# ax.yaxis.set_visible(False) -# ax.spines[:].set_visible(False) -# # Return options: -# if save_str is not None: -# fig.savefig(save_str, bbox_inches='tight') -# if show: -# plt.show() -# return None \ No newline at end of file diff --git a/python/solve_post_problem.py b/python/solve_post_problem.py new file mode 100644 index 0000000..5a8274e --- /dev/null +++ b/python/solve_post_problem.py @@ -0,0 +1,24 @@ +import numpy as np + +# NEURON CIRCUIT (WIDTH): +# total_space = 32 +# side_space = 0.5 +# n_posts = 5 + +# MODEL CIRCUIT (WIDTH): +total_space = 48 +side_space = 0.5 +n_posts = 8 + +# RUN SOLVER: +post_space = np.arange(1, (total_space - 2 * side_space) // n_posts + 1) + +available_space = total_space - 2 * side_space - n_posts * post_space +inter_space = available_space / (n_posts - 1) +remaining_space = available_space % (n_posts - 1) + +# REPORT OUTCOMES: +print('\nPost Width - Inter-Post - Remainder:') +for input, output, remainder in zip(post_space, inter_space, remaining_space): + print(input, output, remainder) +print() \ No newline at end of file