diff --git a/figures/pathway_stages_feat.pdf b/figures/pathway_stages_feat.pdf index 24a39b9..3963b74 100644 Binary files a/figures/pathway_stages_feat.pdf and b/figures/pathway_stages_feat.pdf differ diff --git a/figures/pathway_stages_pre.pdf b/figures/pathway_stages_pre.pdf index 36ce3c1..ed94bee 100644 Binary files a/figures/pathway_stages_pre.pdf and b/figures/pathway_stages_pre.pdf differ diff --git a/main.aux b/main.aux index fef6245..514d122 100644 --- a/main.aux +++ b/main.aux @@ -44,6 +44,8 @@ \abx@aux@page{4}{1} \abx@aux@page{5}{1} \abx@aux@page{6}{1} +\abx@aux@page{7}{1} +\abx@aux@page{8}{1} \abx@aux@cite{0}{helversen1977stridulatory} \abx@aux@segm{0}{0}{helversen1977stridulatory} \abx@aux@cite{0}{stumpner1994song} @@ -94,8 +96,6 @@ \abx@aux@segm{0}{0}{clemens2010intensity} \abx@aux@cite{0}{hildebrandt2009origin} \abx@aux@segm{0}{0}{hildebrandt2009origin} -\abx@aux@page{7}{2} -\abx@aux@page{8}{2} \abx@aux@page{9}{2} \abx@aux@page{10}{2} \abx@aux@page{11}{2} @@ -116,6 +116,8 @@ \abx@aux@page{26}{2} \abx@aux@page{27}{2} \abx@aux@page{28}{2} +\abx@aux@page{29}{2} +\abx@aux@page{30}{2} \abx@aux@cite{0}{clemens2013computational} \abx@aux@segm{0}{0}{clemens2013computational} \abx@aux@cite{0}{hennig2014time} @@ -134,8 +136,6 @@ \abx@aux@segm{0}{0}{clemens2011efficient} \abx@aux@cite{0}{clemens2012nonlinear} \abx@aux@segm{0}{0}{clemens2012nonlinear} -\abx@aux@page{29}{3} -\abx@aux@page{30}{3} \abx@aux@page{31}{3} \abx@aux@page{32}{3} \abx@aux@page{33}{3} @@ -172,11 +172,15 @@ \abx@aux@page{48}{4} \abx@aux@page{49}{4} \abx@aux@page{50}{4} +\@writefile{toc}{\contentsline {section}{\numberline {2}Developing a functional model of the\\grasshopper song recognition pathway}{4}{}\protected@file@percent } \abx@aux@cite{0}{windmill2008time} \abx@aux@segm{0}{0}{windmill2008time} \abx@aux@cite{0}{malkin2014energy} \abx@aux@segm{0}{0}{malkin2014energy} -\@writefile{toc}{\contentsline {section}{\numberline {2}Developing a functional model of the\\grasshopper song recognition pathway}{5}{}\protected@file@percent } +\abx@aux@cite{0}{machens2001discrimination} +\abx@aux@segm{0}{0}{machens2001discrimination} +\abx@aux@cite{0}{machens2001representation} +\abx@aux@segm{0}{0}{machens2001representation} \abx@aux@page{51}{5} \abx@aux@page{52}{5} \abx@aux@page{53}{5} @@ -188,13 +192,12 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Population-driven signal preprocessing}{5}{}\protected@file@percent } \abx@aux@page{59}{5} \abx@aux@page{60}{5} +\newlabel{eq:bandpass}{{1}{5}{}{}{}} +\abx@aux@page{61}{5} +\abx@aux@page{62}{5} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces \textbf {Schematic organisation of the song recognition pathway in grasshoppers compared to the structure of the functional model pathway.} \textbf {a}:~Simplified course of the pathway in the grasshopper, from the tympanal membrane over receptor neurons, local interneurons, and ascending neurons further towards the supraesophageal ganglion. \textbf {b}:~Schematic of synaptic connections between the three neuronal populations within the metathoracic ganglion. \textbf {c}:~Network representation of neuronal connectivity. \textbf {d}:~Flow diagram of the different signal representations and transformations along the model pathway. All representations are time-varying. 1st half: Preprocessing stage (one-dimensional). 2nd half: Feature extraction stage (high-dimensional). }}{6}{}\protected@file@percent } \providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} \newlabel{fig:pathway}{{1}{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} @@ -209,9 +212,6 @@ \abx@aux@segm{0}{0}{hildebrandt2009origin} \abx@aux@cite{0}{clemens2010intensity} \abx@aux@segm{0}{0}{clemens2010intensity} -\newlabel{eq:bandpass}{{1}{7}{}{}{}} -\abx@aux@page{61}{7} -\abx@aux@page{62}{7} \newlabel{eq:env}{{2}{7}{}{}{}} \abx@aux@page{63}{7} \abx@aux@page{64}{7} @@ -222,8 +222,8 @@ \abx@aux@page{68}{7} \abx@aux@page{69}{7} \newlabel{eq:highpass}{{4}{7}{}{}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces \relax }}{8}{}\protected@file@percent } -\newlabel{fig:pre}{{2}{8}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces \textbf {Representations of a song of \textit {O. rufipes} during the preprocessing stage.} \textbf {a}:~Bandpass-filtered tympanal signal. \textbf {b}:~Signal envelope. \textbf {c}:~Logarithmically scaled envelope. \textbf {d}:~Intensity-adapted envelope. }}{7}{}\protected@file@percent } +\newlabel{fig:pre}{{2}{7}{}{}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Feature extraction by individual neurons}{8}{}\protected@file@percent } \newlabel{eq:conv}{{5}{8}{}{}{}} \newlabel{eq:gabor}{{6}{8}{}{}{}} @@ -239,12 +239,12 @@ \abx@aux@page{70}{9} \abx@aux@page{71}{9} \abx@aux@page{72}{9} -\newlabel{eq:lowpass}{{10}{10}{}{}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces \relax }}{10}{}\protected@file@percent } +\newlabel{eq:lowpass}{{10}{9}{}{}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces \textbf {Representations of a song of \textit {O. rufipes} during the feature extraction stage.} \textbf {a}:~Kernel-specific filter responses. \textbf {b}:~Binary responses. \textbf {c}:~Finalized features. }}{10}{}\protected@file@percent } \newlabel{fig:stages_feat}{{3}{10}{}{}{}} \@writefile{toc}{\contentsline {section}{\numberline {3}Two mechanisms driving the emergence of intensity-invariant song representation}{10}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Logarithmic scaling \& spike-frequency adaptation}{10}{}\protected@file@percent } -\newlabel{eq:toy_env}{{11}{11}{}{}{}} +\newlabel{eq:toy_env}{{11}{10}{}{}{}} \newlabel{eq:toy_snr}{{12}{11}{}{}{}} \newlabel{eq:toy_log}{{13}{11}{}{}{}} \newlabel{eq:toy_highpass}{{14}{11}{}{}{}} @@ -252,7 +252,7 @@ \newlabel{eq:pdf_split}{{15}{12}{}{}{}} \newlabel{eq:pdf}{{16}{12}{}{}{}} \newlabel{eq:feat_avg}{{17}{12}{}{}{}} -\newlabel{eq:feat_prop}{{18}{13}{}{}{}} +\newlabel{eq:feat_prop}{{18}{12}{}{}{}} \abx@aux@cite{0}{stumpner1991auditory} \abx@aux@segm{0}{0}{stumpner1991auditory} \@writefile{toc}{\contentsline {section}{\numberline {4}Discriminating species-specific song\\patterns in feature space}{14}{}\protected@file@percent } diff --git a/main.blg b/main.blg deleted file mode 100644 index 550d31f..0000000 --- a/main.blg +++ /dev/null @@ -1,71 +0,0 @@ -[0] Config.pm:307> INFO - This is Biber 2.19 -[0] Config.pm:310> INFO - Logfile is 'main.blg' -[36] biber:340> INFO - === Di Feb 17, 2026, 16:10:35 -[43] Biber.pm:419> INFO - Reading 'main.bcf' -[71] Biber.pm:979> INFO - Found 55 citekeys in bib section 0 -[76] Biber.pm:4419> INFO - Processing section 0 -[80] Biber.pm:4610> INFO - Looking for bibtex file 'cite.bib' for section 0 -[82] bibtex.pm:1713> INFO - LaTeX decoding ... -[111] bibtex.pm:1519> INFO - Found BibTeX data source 'cite.bib' -[277] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized' -[277] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable' -[277] Biber.pm:4239> INFO - Sorting list 'nyt/global//global/global' of type 'entry' with template 'nyt' and locale 'en-US' -[277] Biber.pm:4245> INFO - No sort tailoring available for locale 'en-US' -[299] bbl.pm:660> INFO - Writing 'main.bbl' with encoding 'UTF-8' -[310] bbl.pm:763> INFO - Output to main.bbl -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 10, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 21, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 38, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 49, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 58, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 73, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 82, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 91, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 100, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 109, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 118, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 127, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 136, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 157, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 178, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 187, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 196, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 207, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 218, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 229, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 240, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 249, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 258, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 269, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 278, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 289, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 300, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 309, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 328, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 337, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 400, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 419, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 428, warning: 6 characters of junk seen at toplevel -[310] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 437, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 456, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 491, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 526, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 535, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 556, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 565, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 576, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 587, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 619, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 648, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 658, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 667, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 688, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 709, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 720, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 729, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 749, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 766, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 775, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 800, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_6HUw/347c261ec4135a5723bef5c751f5078f_117857.utf8, line 817, warning: 6 characters of junk seen at toplevel -[311] Biber.pm:133> INFO - WARNINGS: 55 diff --git a/main.fdb_latexmk b/main.fdb_latexmk index 0c59aee..37510d0 100644 --- a/main.fdb_latexmk +++ b/main.fdb_latexmk @@ -1,14 +1,14 @@ # Fdb version 4 -["biber main"] 1771341035.4003 "main.bcf" "main.bbl" "main" 1771341094.70787 0 +["biber main"] 0 "main.bcf" "main.bbl" "main" 1771515163.95181 -1 "cite.bib" 1770904753.08918 27483 4290db0c91f7b5055e25472ef913f6b4 "" - "main.bcf" 1771341094.52472 112931 2a478116d80ebb1ada7083a24facd6e3 "pdflatex" + "main.bcf" 1771515163.89914 112931 2a478116d80ebb1ada7083a24facd6e3 "pdflatex" (generated) "main.bbl" "main.blg" (rewritten before read) -["pdflatex"] 1771341093.48122 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1771341094.7081 0 +["pdflatex"] 1771515163.09292 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1771515163.95201 0 "/etc/texmf/web2c/texmf.cnf" 1761560044.43676 475 c0e671620eb5563b2130f56340a5fde8 "" - "/home/hartling/phd/paper/paper_2025/main.tex" 1771341093.40273 39474 270d81ac4d9b5510e0f5b6ffd47d4548 "" + "/home/hartling/phd/paper/paper_2025/main.tex" 1771515162.09915 40191 e7c494be630d17e7faf2d56828fdd232 "" "/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 "" @@ -18,6 +18,7 @@ "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbxti10.tfm" 1136768653 1532 9162035f4e7176612125649e348e2195 "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm" 1136768653 1528 abec98dbc43e172678c11b3b9031252a "" "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" @@ -34,6 +35,7 @@ "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmti12.tfm" 1136768653 1484 ed72f8f5cf654cda15ecc8e32bfcbee5 "" "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 "" "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1248133631 32080 340ef9bf63678554ee606688e7b5339d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb" 1248133631 36554 b67dc2cfa451409e100b3fcf5f506509 "" "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 "" "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb" 1248133631 36741 fa121aac0049305630cf160b86157ee4 "" @@ -151,12 +153,12 @@ "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1761648508 8213325 7fd20752ab46ff9aa583e4973d7433df "" "figures/fig_auditory_pathway.pdf" 1769682029.31297 1284536 cd071429286586e390a99d74f742d2d5 "" "figures/fig_auditory_pathway.pdf_tex" 1769682029.31397 2624 f8d79af301f26c4639670ba4283887a2 "" - "figures/pathway_stages_feat.pdf" 1771340650.40761 82316897 05ba2bb6e8749f206ed48a1452e502fe "" - "figures/pathway_stages_pre.pdf" 1771340634.77974 417332 f29087bfa1db0ef1a7ad1c27dc1875b2 "" - "main.aux" 1771341094.51872 11126 896020d94c8241fd7543e4bc1dff8f68 "pdflatex" - "main.bbl" 1771341036.00124 91039 1380dc8c93d2855fdb132cc5a40ad52f "biber main" - "main.run.xml" 1771341094.52472 2335 a049bc26a7f032e842ce55de5bc38328 "pdflatex" - "main.tex" 1771341093.40273 39474 270d81ac4d9b5510e0f5b6ffd47d4548 "" + "figures/pathway_stages_feat.pdf" 1771515026.43814 12242319 984550dac4b4813ff16be63b3a9f28fe "" + "figures/pathway_stages_pre.pdf" 1771515023.82316 440442 13dea7a2d6ee09d083d3bb4ef98f7072 "" + "main.aux" 1771515163.89314 11587 5450d835105f93ac20f7015a8a1442e4 "pdflatex" + "main.bbl" 1771493997.53596 91039 1380dc8c93d2855fdb132cc5a40ad52f "biber main" + "main.run.xml" 1771515163.90014 2335 a049bc26a7f032e842ce55de5bc38328 "pdflatex" + "main.tex" 1771515162.09915 40191 e7c494be630d17e7faf2d56828fdd232 "" (generated) "main.aux" "main.bcf" diff --git a/main.fls b/main.fls index 2e69dbf..7a6102d 100644 --- a/main.fls +++ b/main.fls @@ -280,6 +280,7 @@ INPUT ./figures/pathway_stages_pre.pdf INPUT ./figures/pathway_stages_pre.pdf INPUT ./figures/pathway_stages_pre.pdf INPUT ./figures/pathway_stages_pre.pdf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbxti10.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm @@ -295,6 +296,7 @@ INPUT main.run.xml OUTPUT main.run.xml INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb diff --git a/main.log b/main.log index 0fd316f..4ca3db0 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) 17 FEB 2026 16:11 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2025.10.28) 19 FEB 2026 16:32 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -619,14 +619,14 @@ LaTeX Font Info: ... okay on input line 37. * layout: * layoutoffset:(h,v)=(0.0pt,0.0pt) * modes: includehead includefoot -* h-part:(L,W,R)=(71.13188pt, 455.24411pt, 71.13188pt) +* h-part:(L,W,R)=(56.9055pt, 483.69687pt, 56.9055pt) * v-part:(T,H,B)=(56.9055pt, 731.23584pt, 56.9055pt) * \paperwidth=597.50787pt * \paperheight=845.04684pt -* \textwidth=455.24411pt +* \textwidth=483.69687pt * \textheight=664.23584pt -* \oddsidemargin=-1.1381pt -* \evensidemargin=-1.1381pt +* \oddsidemargin=-15.36449pt +* \evensidemargin=-15.36449pt * \topmargin=-15.36449pt * \headheight=12.0pt * \headsep=25.0pt @@ -702,94 +702,67 @@ LaTeX Font Info: Trying to load font information for U+msb on input line 38. (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) -Overfull \hbox (50.94092pt too wide) in paragraph at lines 114--145 -\OT1/cmr/m/n/12 ing pri-mar-ily for in-traspe-cific com-mu-ni-ca-tion, which in-cludes mate at-trac-tion ([]) - [] - - -Overfull \hbox (82.85727pt too wide) in paragraph at lines 114--145 +Overfull \hbox (54.40451pt too wide) in paragraph at lines 114--145 \OT1/cmr/m/n/12 and eval-u-a-tion ([]), sender lo-cal-iza-tion ([]), [] -Overfull \hbox (1.14978pt too wide) in paragraph at lines 114--145 -\OT1/cmr/m/n/12 courtship dis-play ([]), ri-val de-ter-rence ([]), and loss- - [] - - -Overfull \hbox (18.33708pt too wide) in paragraph at lines 114--145 -\OT1/cmr/m/n/12 ally more char-ac-ter-is-tic of a species than mor-pho-log-i-cal traits ([]; - [] - - -Overfull \hbox (19.06393pt too wide) in paragraph at lines 114--145 -[]\OT1/cmr/m/n/12 ), which can vary greatly within species ([]; []). - [] - - -Overfull \hbox (3.45023pt too wide) in paragraph at lines 114--145 -\OT1/cmr/m/n/12 di-rec-tional hear-ing ([]; []; +Overfull \hbox (9.21051pt too wide) in paragraph at lines 114--145 +\OT1/cmr/m/n/12 tion sig-nals for dif-fer-ent con-texts and ranges us-ing their wings, hindlegs, or mandibles ([]). [] [1 -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] -Overfull \hbox (0.45996pt too wide) in paragraph at lines 149--206 -\OT1/cmr/m/n/12 ab-so-lute time in-ter-vals ([]; []), +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] +Overfull \hbox (42.86342pt too wide) in paragraph at lines 210--271 +\OT1/cmr/m/n/12 and grasshop-pers ([]; re-view on both: []). [] -Overfull \hbox (81.98225pt too wide) in paragraph at lines 149--206 -\OT1/cmr/m/n/12 cess, in which dif-fer-ent neu-ronal pop-u-la-tions con-tribute to vary-ing de-grees ([]) +Overfull \hbox (3.29253pt too wide) in paragraph at lines 210--271 +[]\OT1/cmr/m/n/12 ; []). The fit-ted sig-moidal [] - -Overfull \hbox (0.27292pt too wide) in paragraph at lines 149--206 -\OT1/cmr/m/n/12 and by dif-fer-ent mech-a-nisms ([]). Ap-prox-i-mat-ing this pro-cess within +[3] +Overfull \hbox (41.1838pt too wide) in paragraph at lines 304--339 +\OT1/cmr/m/n/12 for con-spe-cific song recog-ni-tion and re-sponse ini-ti-a-tion ([]; [] -[2] -Overfull \hbox (50.3275pt too wide) in paragraph at lines 210--271 -\OT1/cmr/m/n/12 ets ([]; []) and grasshop-pers ([]; - [] - -[3] [4] (./figures/fig_auditory_pathway.pdf_tex +[4] (./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 487.77744pt. -) [5] +(pdftex.def) Requested size: 483.69687pt x 518.2677pt. +) +Overfull \hbox (65.93214pt too wide) in paragraph at lines 366--372 +\OT1/cmr/m/n/12 tym-pa-nal mem-brane acts as a me-chan-i-cal res-o-nance fil-ter for sound-induced vi-bra-tions ([]; + [] + +[5] LaTeX Warning: Text page 6 contains only floats. -[6 <./figures/fig_auditory_pathway.pdf>] -Overfull \hbox (34.84988pt too wide) in paragraph at lines 385--390 -\OT1/cmr/m/n/12 curve over log-a-rith-mi-cally com-pressed in-ten-sity lev-els ([]; []). - [] +Overfull \vbox (0.80978pt too high) has occurred while \output is active [] -Overfull \hbox (4.40714pt too wide) in paragraph at lines 393--402 -\OT1/cmr/m/n/12 the sub-se-quent lo-cal in-terneu-rons ([]; []) - [] - - + [6 <./figures/fig_auditory_pathway.pdf>] + File: figures/pathway_stages_pre.pdf Graphic file (type pdf) -Package pdftex.def Info: figures/pathway_stages_pre.pdf used on input line 414. -(pdftex.def) Requested size: 455.24411pt x 170.7161pt. -[7] [8 <./figures/pathway_stages_pre.pdf>] [9] - -File: figures/pathway_stages_feat.pdf Graphic file (type pdf) - -Package pdftex.def Info: figures/pathway_stages_feat.pdf used on input line 521. -(pdftex.def) Requested size: 455.24411pt x 170.7161pt. - -Overfull \hbox (9.43962pt too wide) in paragraph at lines 527--527 -[]\OT1/cmr/bx/n/17.28 Two mech-a-nisms driv-ing the emer-gence of intensity- +Package pdftex.def Info: figures/pathway_stages_pre.pdf used on input line 415. +(pdftex.def) Requested size: 483.69687pt x 181.38585pt. + [7 <./figures/pathway_stages_pre.pdf>] [8] +Overfull \hbox (42.89445pt too wide) in paragraph at lines 508--517 +\OT1/cmr/m/n/12 glion ([]; []; []). [] -[10 <./figures/pathway_stages_feat.pdf>] [11] [12] [13] [14] (./main.aux) + +File: figures/pathway_stages_feat.pdf Graphic file (type pdf) + +Package pdftex.def Info: figures/pathway_stages_feat.pdf used on input line 529. +(pdftex.def) Requested size: 483.69687pt x 181.38585pt. +[9] [10 <./figures/pathway_stages_feat.pdf>] [11] [12] [13] [14] (./main.aux) *********** LaTeX2e <2023-11-01> patch level 1 L3 programming layer <2024-01-22> @@ -799,18 +772,18 @@ Package logreq Info: Writing requests to 'main.run.xml'. ) Here is how much of TeX's memory you used: - 20727 strings out of 474222 - 446637 string characters out of 5748732 + 20729 strings out of 474222 + 446664 string characters out of 5748732 1937975 words of memory out of 5000000 - 42712 multiletter control sequences out of 15000+600000 - 569035 words of font info for 78 fonts, out of 8000000 for 9000 + 42713 multiletter control sequences out of 15000+600000 + 569394 words of font info for 79 fonts, out of 8000000 for 9000 1143 hyphenation exceptions out of 8191 94i,19n,93p,955b,1732s stack positions out of 10000i,1000n,20000p,200000b,200000s - -Output written on main.pdf (14 pages, 84180383 bytes). + +Output written on main.pdf (14 pages, 14132974 bytes). PDF statistics: - 1172 PDF objects out of 1200 (max. 8388607) - 714 compressed objects within 8 object streams + 1210 PDF objects out of 1440 (max. 8388607) + 737 compressed objects within 8 object streams 0 named destinations out of 1000 (max. 500000) 28 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/main.pdf b/main.pdf index 0d01294..9d4baf6 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.synctex.gz b/main.synctex.gz index 70b4894..ec62567 100644 Binary files a/main.synctex.gz and b/main.synctex.gz differ diff --git a/main.tex b/main.tex index 6798930..8e5ba74 100644 --- a/main.tex +++ b/main.tex @@ -1,6 +1,6 @@ \documentclass[a4paper, 12pt]{article} -\usepackage[left=2.5cm,right=2.5cm,top=2cm,bottom=2cm,includeheadfoot]{geometry} +\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,includeheadfoot]{geometry} \usepackage[onehalfspacing]{setspace} \usepackage{graphicx} \usepackage{svg} @@ -409,10 +409,17 @@ intensity-adapted envelope $\adapt(t)$ is then passed on from the local interneurons to the ascending neurons, where it serves as the basis for the following feature extraction stage. +% Cite somewhere: \begin{figure}[!ht] \centering \includegraphics[width=\textwidth]{figures/pathway_stages_pre.pdf} - \caption{} + \caption{\textbf{Representations of a song of \textit{O. rufipes} during + the preprocessing stage.} + \textbf{a}:~Bandpass-filtered tympanal signal. + \textbf{b}:~Signal envelope. + \textbf{c}:~Logarithmically scaled envelope. + \textbf{d}:~Intensity-adapted envelope. + } \label{fig:pre} \end{figure} \FloatBarrier @@ -516,10 +523,16 @@ the resulting high-dimensional feature space, different species-specific song patterns are characterized by a distinct combination of feature values, which can be read out by a simple linear classifier. +% Cite somewhere: \begin{figure}[!ht] \centering \includegraphics[width=\textwidth]{figures/pathway_stages_feat.pdf} - \caption{} + \caption{\textbf{Representations of a song of \textit{O. rufipes} during + the feature extraction stage.} + \textbf{a}:~Kernel-specific filter responses. + \textbf{b}:~Binary responses. + \textbf{c}:~Finalized features. + } \label{fig:stages_feat} \end{figure} \FloatBarrier diff --git a/python/fig_pathway_stages.py b/python/fig_pathway_stages.py index cfb03de..8ee804f 100644 --- a/python/fig_pathway_stages.py +++ b/python/fig_pathway_stages.py @@ -1,10 +1,12 @@ +from math import log + import plotstyle_plt import glob import numpy as np import matplotlib.pyplot as plt from itertools import product from thunderhopper.modeltools import load_data -from color_functions import load_colors, shade_colors +from color_functions import load_colors from IPython import embed def prepare_fig(nrows, ncols, width=8, height=None, rheight=2, @@ -45,14 +47,19 @@ def ylimits(ax, signal, minval=None, maxval=None, pad=0.05): limits[1] += (limits[1] - limits[0]) * pad return ax.set_ylim(limits) -def super_xlabel(label, fig, high_ax, low_ax, **kwargs): - x = (low_ax.get_position().x0 + high_ax.get_position().x1) / 2 - fig.supxlabel(label, x=x, **kwargs) +def ylabel(ax, label, x=-0.23, fontsize=20): + ax.set_ylabel(label, fontsize=fontsize, rotation=0, ha='left', va='center') + ax.yaxis.set_label_coords(x, 0.5) return None -def super_ylabel(label, fig, high_ax, low_ax, **kwargs): +def super_xlabel(label, fig, high_ax, low_ax, y=0.005, **kwargs): + x = (low_ax.get_position().x0 + high_ax.get_position().x1) / 2 + fig.supxlabel(label, x=x, y=y, **kwargs) + return None + +def super_ylabel(label, fig, high_ax, low_ax, x=0.005, **kwargs): y = (low_ax.get_position().y0 + high_ax.get_position().y1) / 2 - fig.supylabel(label, y=y, **kwargs) + fig.supylabel(label, x=x, y=y, **kwargs) return None def hide_axis(ax, side='bottom'): @@ -63,10 +70,11 @@ def hide_axis(ax, side='bottom'): return None def plot_line(ax, time, signal, ymin=None, ymax=None, xmin=None, xmax=None, - xpad=None, ypad=0.05, **kwargs): + xpad=None, ypad=0.05, yloc=None, **kwargs): handles = ax.plot(time, signal, **kwargs) xlimits(ax, time, minval=xmin, maxval=xmax, pad=xpad) ylimits(ax, signal, minval=ymin, maxval=ymax, pad=ypad) + ax.yaxis.set_major_locator(plt.MultipleLocator(yloc)) return handles def plot_barcode(ax, time, binary, offset=0.5, xmin=None, xmax=None, **kwargs): @@ -83,7 +91,8 @@ def plot_barcode(ax, time, binary, offset=0.5, xmin=None, xmax=None, **kwargs): upper += offset + 1 xlimits(ax, time, minval=xmin, maxval=xmax) ax.set_ylim(0, upper) - ax.axis('off') + hide_axis(ax, 'bottom') + hide_axis(ax, 'left') return handles def indicate_zoom(fig, high_ax, low_ax, zoom_abs, **kwargs): @@ -100,6 +109,21 @@ def indicate_zoom(fig, high_ax, low_ax, zoom_abs, **kwargs): def assign_colors(handles, types, colors): for handle, type_id in zip(handles, types): handle.set_color(colors[str(int(type_id))]) + return None + +def reorder_traces(handles, signal, zlow=2, zhigh=2.5): + inds = np.argsort(signal.std(axis=0)) + zorders = np.linspace(zlow, zhigh, len(inds))[::-1] + for ind, z in zip(inds, zorders): + handles[ind].set_zorder(z) + return None + +def letter_subplots(axes, labels='abcd', x=0.02, y=1, ha='left', va='bottom', + fontsize=16, fontweight='bold', **kwargs): + for ax, label in zip(axes, labels): + ax.text(x, y, label, transform=ax.transAxes, ha=ha, va=va, + fontsize=fontsize, fontweight=fontweight, **kwargs) + return None # GENERAL SETTINGS: @@ -118,32 +142,57 @@ grid_kwargs = dict( wspace=0.15, hspace=0.3, left=0.1, - right=0.95, + right=0.99, bottom=0.1, top=0.95 ) +ylabels = dict( + filt=r'$x_{\text{filt}}$', + env=r'$x_{\text{env}}$', + log=r'$x_{\text{dB}}$', + inv=r'$x_{\text{adapt}}$', + conv=r'$c_i$', + bi=r'$b_i$', + feat=r'$f_i$' +) colors = load_colors('../data/stage_colors.npz') lw_full = dict( filt=0.25, env=0.5, log=0.5, inv=0.5, - conv=0.5, - bi=1, - feat=1 + conv=0.25, + bi=0, + feat=2 ) lw_zoom = dict( - filt=0.25, - env=0.75, - log=0.75, - inv=0.75, - conv=0.5, - bi=1, - feat=0.75 -) + filt=0.5, + env=1, + log=1, + inv=1, + conv=1.5, + bi=0, + feat=2 +) +loc_full = dict( + filt=0.2, + env=0.1, + log=20, + inv=10, + conv=1, + feat=1 +) +loc_zoom = dict( + filt=0.1, + env=0.02, + log=20, + inv=10, + conv=0.2, + feat=1 +) zoom_rel = np.array([0.3, 0.4]) zoom_kwargs = dict( - color=(0.85, 0.85, 0.85), + color=3 * (0.85,), zorder=0, linewidth=0 ) @@ -152,7 +201,7 @@ zoom_kwargs = dict( # [3, 0.032] # ]) kern_types = np.array([1, -1, 2, -2, 3, -3, 4, -4]) -kern_sigmas = np.array([0.008, 0.016, 0.032]) +kern_sigmas = np.array([0.008, 0.032]) kernels = np.array([[k, s] for k in kern_types for s in kern_sigmas]) conv_colors = load_colors('../data/conv_colors.npz') bi_colors = load_colors('../data/bi_colors.npz') @@ -180,43 +229,44 @@ for data_path in data_paths: # PART I: PREPROCESSING STAGE fig, axes = prepare_fig(4, 2, **fig_kwargs, **grid_kwargs) super_xlabel('time [s]', fig, axes[0, 0], axes[0, -1]) - super_ylabel('amplitude', fig, axes[0, 0], axes[-1, 0]) # Bandpass-filtered signal: ax_full, ax_zoom = axes[0, :] - plot_line(ax_full, t_full, data['filt'], c=colors['filt'], lw=lw_full['filt']) - plot_line(ax_zoom, t_zoom, data['filt'][zoom_mask], c=colors['filt'], lw=lw_zoom['filt']) + ylabel(ax_full, ylabels['filt']) + plot_line(ax_full, t_full, data['filt'], c=colors['filt'], lw=lw_full['filt'], yloc=loc_full['filt']) + plot_line(ax_zoom, t_zoom, data['filt'][zoom_mask], c=colors['filt'], lw=lw_zoom['filt'], yloc=loc_zoom['filt']) hide_axis(ax_full, 'bottom') hide_axis(ax_zoom, 'bottom') - hide_axis(ax_zoom, 'left') # Signal envelope: ax_full, ax_zoom = axes[1, :] - plot_line(ax_full, t_full, data['env'], ymin=0, c=colors['env'], lw=lw_full['env']) - plot_line(ax_zoom, t_zoom, data['env'][zoom_mask], ymin=0, c=colors['env'], lw=lw_zoom['env']) + ylabel(ax_full, ylabels['env']) + plot_line(ax_full, t_full, data['env'], ymin=0, c=colors['env'], lw=lw_full['env'], yloc=loc_full['env']) + plot_line(ax_zoom, t_zoom, data['env'][zoom_mask], ymin=0, c=colors['env'], lw=lw_zoom['env'], yloc=loc_zoom['env']) hide_axis(ax_full, 'bottom') hide_axis(ax_zoom, 'bottom') - hide_axis(ax_zoom, 'left') # Logarithmic envelope: ax_full, ax_zoom = axes[2, :] - plot_line(ax_full, t_full, data['log'], ymax=0, c=colors['log'], lw=lw_full['log']) - plot_line(ax_zoom, t_zoom, data['log'][zoom_mask], ymax=0, c=colors['log'], lw=lw_zoom['log']) + ylabel(ax_full, ylabels['log']) + plot_line(ax_full, t_full, data['log'], ymax=0, c=colors['log'], lw=lw_full['log'], yloc=loc_full['log']) + plot_line(ax_zoom, t_zoom, data['log'][zoom_mask], ymax=0, c=colors['log'], lw=lw_zoom['log'], yloc=loc_zoom['log']) hide_axis(ax_full, 'bottom') hide_axis(ax_zoom, 'bottom') - hide_axis(ax_zoom, 'left') # Adapted envelope: ax_full, ax_zoom = axes[3, :] - plot_line(ax_full, t_full, data['inv'], c=colors['inv'], lw=lw_full['inv']) - plot_line(ax_zoom, t_zoom, data['inv'][zoom_mask], c=colors['inv'], lw=lw_zoom['inv']) - hide_axis(ax_zoom, 'left') + ylabel(ax_full, ylabels['inv']) + plot_line(ax_full, t_full, data['inv'], c=colors['inv'], lw=lw_full['inv'], yloc=loc_full['inv']) + plot_line(ax_zoom, t_zoom, data['inv'][zoom_mask], c=colors['inv'], lw=lw_zoom['inv'], yloc=loc_zoom['inv']) # Posthoc adjustments: ax_full.set_xlim(t_full[0], t_full[-1]) ax_zoom.set_xlim(t_zoom[0], t_zoom[-1]) indicate_zoom(fig, axes[0, 0], axes[-1, 0], zoom_abs, **zoom_kwargs) indicate_zoom(fig, axes[0, 1], axes[-1, 1], zoom_abs, **zoom_kwargs) + letter_subplots(axes[:, 0]) + # fig.align_ylabels(axes[:, 0]) if save_name is not None: fig.savefig(f'{save_name}_pre.pdf') @@ -224,41 +274,45 @@ for data_path in data_paths: # PART II: FEATURE EXTRACTION STAGE: fig, axes = prepare_fig(3, 2, **fig_kwargs, **grid_kwargs) super_xlabel('time [s]', fig, axes[0, 0], axes[0, -1]) - super_ylabel('amplitude', fig, axes[0, 0], axes[-1, 0]) # Convolutional filter responses: ax_full, ax_zoom = axes[0, :] + ylabel(ax_full, ylabels['conv']) signal = data['conv'][:, kern_inds] - handles = plot_line(ax_full, t_full, signal, lw=lw_full['conv']) + handles = plot_line(ax_full, t_full, signal, lw=lw_full['conv'], yloc=loc_full['conv']) assign_colors(handles, kernel_specs[:, 0], conv_colors) - handles = plot_line(ax_zoom, t_zoom, signal[zoom_mask, :], lw=lw_zoom['conv']) + reorder_traces(handles, signal) + handles = plot_line(ax_zoom, t_zoom, signal[zoom_mask, :], lw=lw_zoom['conv'], yloc=loc_zoom['conv']) assign_colors(handles, kernel_specs[:, 0], conv_colors) + reorder_traces(handles, signal[zoom_mask, :]) hide_axis(ax_full, 'bottom') hide_axis(ax_zoom, 'bottom') - hide_axis(ax_zoom, 'left') # Binary responses: ax_full, ax_zoom = axes[1, :] + ylabel(ax_full, ylabels['bi']) signal = data['bi'][:, kern_inds] - handles = plot_barcode(ax_full, t_full, signal) + handles = plot_barcode(ax_full, t_full, signal, lw=lw_full['bi']) assign_colors(handles, kernel_specs[:, 0], bi_colors) - handles = plot_barcode(ax_zoom, t_zoom, signal[zoom_mask, :]) + handles = plot_barcode(ax_zoom, t_zoom, signal[zoom_mask, :], lw=lw_zoom['bi']) assign_colors(handles, kernel_specs[:, 0], bi_colors) # Finalized features: ax_full, ax_zoom = axes[2, :] + ylabel(ax_full, ylabels['feat']) signal = data['feat'][:, kern_inds] - handles = plot_line(ax_full, t_full, signal, ymin=0, ymax=1, c=colors['feat'], lw=lw_full['feat']) + handles = plot_line(ax_full, t_full, signal, ymin=0, ymax=1, c=colors['feat'], lw=lw_full['feat'], yloc=loc_full['feat']) assign_colors(handles, kernel_specs[:, 0], feat_colors) - handles = plot_line(ax_zoom, t_zoom, signal[zoom_mask, :], ymin=0, ymax=1, c=colors['feat'], lw=lw_zoom['feat']) + handles = plot_line(ax_zoom, t_zoom, signal[zoom_mask, :], ymin=0, ymax=1, c=colors['feat'], lw=lw_zoom['feat'], yloc=loc_zoom['feat']) assign_colors(handles, kernel_specs[:, 0], feat_colors) - hide_axis(ax_zoom, 'left') # Posthoc adjustments: ax_full.set_xlim(t_full[0], t_full[-1]) ax_zoom.set_xlim(t_zoom[0], t_zoom[-1]) indicate_zoom(fig, axes[0, 0], axes[-1, 0], zoom_abs, **zoom_kwargs) indicate_zoom(fig, axes[0, 1], axes[-1, 1], zoom_abs, **zoom_kwargs) + letter_subplots(axes[:, 0]) + # fig.align_ylabels(axes[:, 0]) if save_name is not None: fig.savefig(f'{save_name}_feat.pdf') plt.show() diff --git a/python/plotstyle_plt.py b/python/plotstyle_plt.py index 72c167e..09d0e02 100644 --- a/python/plotstyle_plt.py +++ b/python/plotstyle_plt.py @@ -5,9 +5,8 @@ mpl.rcParams['text.usetex'] = False # Font style: mpl.rcParams['font.style'] = 'normal' -mpl.rcParams['font.family'] = 'serif' +mpl.rcParams['font.family'] = 'sans-serif' mpl.rcParams['mathtext.fontset'] = 'cm' -mpl.rcParams['mathtext.default'] = 'regular' # Font sizes: mpl.rcParams['font.size'] = 14 @@ -41,7 +40,7 @@ mpl.rcParams['axes.spines.right'] = False mpl.rcParams['axes.xmargin'] = 0 mpl.rcParams['axes.ymargin'] = 0 mpl.rcParams['axes.autolimit_mode'] = 'round_numbers' -mpl.rcParams['axes.labelpad'] = 3 +mpl.rcParams['axes.labelpad'] = 5 # Major tick parameters: mpl.rcParams['xtick.major.size'] = 5 diff --git a/python/save_kernel_colors.py b/python/save_kernel_colors.py index 8a642e7..dac518b 100644 --- a/python/save_kernel_colors.py +++ b/python/save_kernel_colors.py @@ -4,7 +4,7 @@ from color_functions import load_colors, shade_colors # Settings: stages = ['conv', 'bi', 'feat'] kern_types = np.array([1, -1, 2, -2, 3, -3, 4, -4]) -shade_factors = np.linspace(-0.5, 0.5, kern_types.size) +shade_factors = np.linspace(-0.6, 0.2, kern_types.size) # Main colors: stage_colors = load_colors('../data/stage_colors.npz')