Finished (:D) fig_invariance_log_hp.pdf.

Added movable label string to time_bar().
This commit is contained in:
j-hartling
2026-03-23 15:38:49 +01:00
parent a276883454
commit dc4443aa17
18 changed files with 389 additions and 247 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -248,7 +248,7 @@
\newlabel{eq:toy_log}{{12}{11}{}{}{}}
\newlabel{eq:toy_highpass}{{13}{11}{}{}{}}
\newlabel{eq:toy_snr}{{14}{12}{}{}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces \textbf {Intensity invariance by logarithmic compression and adaptation is restricted by the noise floor.} Envelope $x_{\text {env}}(t)$ is transformed into logarihmically compressed envelope $x_{\text {dB}}(t)$ and further into intensity-adapted envelope $x_{\text {adapt}}(t)$. Indicated time scale is $5\,$s for both \textbf {a} and \textbf {b} (black bars). \textbf {a}:~Ideally, if $x_{\text {env}}(t)$ consists only of song component $s(t)$ rescaled by $\alpha $, then $x_{\text {adapt}}(t)$ is fully intensity-invariant across all $\alpha $. \textbf {b}:~In practice, $x_{\text {env}}(t)$ also contains fixed-scale noise component $\eta (t)$, which limits the effective intensity invariance of $x_{\text {adapt}}(t)$ to sufficiently large $\alpha $. \textbf {c}:~Ratios of the SD of each representation in \textbf {b} at a given $\alpha $ relative to the SD of the representation for $\alpha =0$ (solid lines). The same ratios for the ideal $x_{\text {adapt}}(t)$ in \textbf {a} are shown for comparison (dashed line). }}{12}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces \textbf {Intensity invariance by logarithmic compression and adaptation is restricted by the noise floor.} Synthetic input $x_{\text {filt}}(t)$ consists of song component $s(t)$ scaled by $\alpha $ with (\textbf {c}{} and \textbf {d}) or without (\textbf {a}{} and \textbf {b}) additive noise component $\eta (t)$. Input $x_{\text {filt}}(t)$ is transformed into envelope $x_{\text {env}}(t)$, logarithmically compressed envelope $x_{\text {dB}}(t)$, and intensity-adapted envelope $x_{\text {adapt}}(t)$. \textbf {Left}:~$x_{\text {env}}(t)$, $x_{\text {dB}}(t)$, and $x_{\text {adapt}}(t)$ for different scales $\alpha $. \textbf {Right}:~Ratios of the standard deviation of $x_{\text {env}}(t)$, $x_{\text {dB}}(t)$, and $x_{\text {adapt}}(t)$ relative to the respective reference standard deviation for input $x_{\text {filt}}(t)=\eta (t)$. \textbf {a}{} and \textbf {b}:~Ideally, if $x_{\text {filt}}(t)=\alpha \cdot s(t)$, then $x_{\text {adapt}}(t)$ is intensity-invariant across all $\alpha $. \textbf {c}{} and \textbf {d}:~In practice, if $x_{\text {filt}}(t)=\alpha \cdot s(t)+\eta (t)$, the intensity invariance of $x_{\text {adapt}}(t)$ is limited to sufficiently large $\alpha $. Shaded area indicates saturation of $x_{\text {adapt}}(t)$ at $95\,\%$ curve span. }}{12}{}\protected@file@percent }
\newlabel{fig:inv_log-hp}{{4}{12}{}{}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Thresholding nonlinearity \& temporal averaging}{12}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces \textbf {Intensity invariance by thresholding and temporal averaging depends on the threshold value with regard to variable range but not saturation level.} Kernel response $c_i(t)$ is rescaled by $\alpha $ and transformed into binary response $b_i(t)$ and further into feature $f_i(t)$. Threshold value $\Theta _i$ is set to different percentiles of the the distribution of $c_i(t)$ at $\alpha =1$. Darker colors indicate higher values of $\Theta _i$. Indicated time scale of $100\,$ms is the same for \textbf {a}-\textbf {c} (black bar). \textbf {a}:~50th percentile. \textbf {b}:~75th percentile. \textbf {c}:~100th percentile. \textbf {d}:~Average value of $f_i(t)$ during the song for the different $\Theta _i$ in \textbf {a}-\textbf {c}. }}{13}{}\protected@file@percent }

138
main.blg
View File

@@ -1,71 +1,71 @@
[0] Config.pm:307> INFO - This is Biber 2.19
[0] Config.pm:310> INFO - Logfile is 'main.blg'
[38] biber:340> INFO - === Do Mär 19, 2026, 16:33:01
[45] Biber.pm:419> INFO - Reading 'main.bcf'
[73] Biber.pm:979> INFO - Found 55 citekeys in bib section 0
[78] Biber.pm:4419> INFO - Processing section 0
[82] Biber.pm:4610> INFO - Looking for bibtex file 'cite.bib' for section 0
[84] bibtex.pm:1713> INFO - LaTeX decoding ...
[115] bibtex.pm:1519> INFO - Found BibTeX data source 'cite.bib'
[293] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[293] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[293] Biber.pm:4239> INFO - Sorting list 'nyt/global//global/global' of type 'entry' with template 'nyt' and locale 'en-US'
[293] Biber.pm:4245> INFO - No sort tailoring available for locale 'en-US'
[316] bbl.pm:660> INFO - Writing 'main.bbl' with encoding 'UTF-8'
[326] bbl.pm:763> INFO - Output to main.bbl
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 10, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 21, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 38, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 49, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 58, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 73, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 82, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 91, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 100, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 109, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 118, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 127, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 136, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 157, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 178, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 187, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 196, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 207, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 218, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 229, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 240, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 249, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 258, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 269, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 278, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 289, warning: 6 characters of junk seen at toplevel
[326] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 300, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 309, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 328, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 337, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 400, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 419, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 428, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 437, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 456, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 491, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 526, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 535, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 556, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 565, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 576, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 587, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 619, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 648, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 658, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 667, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 688, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 709, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 720, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 729, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 749, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 766, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 775, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 800, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_fJKN/347c261ec4135a5723bef5c751f5078f_21083.utf8, line 817, warning: 6 characters of junk seen at toplevel
[327] Biber.pm:133> INFO - WARNINGS: 55
[36] biber:340> INFO - === Mo Mär 23, 2026, 15:34:22
[43] Biber.pm:419> INFO - Reading 'main.bcf'
[71] Biber.pm:979> INFO - Found 55 citekeys in bib section 0
[77] Biber.pm:4419> INFO - Processing section 0
[81] Biber.pm:4610> INFO - Looking for bibtex file 'cite.bib' for section 0
[83] bibtex.pm:1713> INFO - LaTeX decoding ...
[112] bibtex.pm:1519> INFO - Found BibTeX data source 'cite.bib'
[284] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[284] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[284] Biber.pm:4239> INFO - Sorting list 'nyt/global//global/global' of type 'entry' with template 'nyt' and locale 'en-US'
[284] Biber.pm:4245> INFO - No sort tailoring available for locale 'en-US'
[307] bbl.pm:660> INFO - Writing 'main.bbl' with encoding 'UTF-8'
[317] bbl.pm:763> INFO - Output to main.bbl
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 10, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 21, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 38, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 49, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 58, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 73, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 82, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 91, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 100, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 109, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 118, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 127, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 136, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 157, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 178, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 187, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 196, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 207, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 218, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 229, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 240, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 249, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 258, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 269, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 278, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 289, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 300, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 309, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 328, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 337, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 400, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 419, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 428, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 437, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 456, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 491, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 526, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 535, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 556, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 565, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 576, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 587, warning: 6 characters of junk seen at toplevel
[317] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 619, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 648, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 658, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 667, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 688, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 709, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 720, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 729, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 749, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 766, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 775, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 800, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:131> WARN - BibTeX subsystem: /tmp/biber_tmp_WUPV/347c261ec4135a5723bef5c751f5078f_55550.utf8, line 817, warning: 6 characters of junk seen at toplevel
[318] Biber.pm:133> INFO - WARNINGS: 55

View File

@@ -1,14 +1,14 @@
# Fdb version 4
["biber main"] 1773934381.64397 "main.bcf" "main.bbl" "main" 1774003703.72889 0
["biber main"] 1774276462.09046 "main.bcf" "main.bbl" "main" 1774276586.37924 0
"cite.bib" 1770904753.08918 27483 4290db0c91f7b5055e25472ef913f6b4 ""
"main.bcf" 1774003703.5967 112931 2a478116d80ebb1ada7083a24facd6e3 "pdflatex"
"main.bcf" 1774276586.2705 112931 2a478116d80ebb1ada7083a24facd6e3 "pdflatex"
(generated)
"main.bbl"
"main.blg"
(rewritten before read)
["pdflatex"] 1774003702.2857 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1774003703.7291 0
["pdflatex"] 1774276584.89956 "/home/hartling/phd/paper/paper_2025/main.tex" "main.pdf" "main" 1774276586.37948 0
"/etc/texmf/web2c/texmf.cnf" 1761560044.43676 475 c0e671620eb5563b2130f56340a5fde8 ""
"/home/hartling/phd/paper/paper_2025/main.tex" 1773934444.28996 48517 9087d4f689a47c904bde7fa096405f41 ""
"/home/hartling/phd/paper/paper_2025/main.tex" 1774276584.74351 48814 dd2ac1d2321e0ebfabfa83fbfcca1664 ""
"/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 ""
@@ -153,17 +153,17 @@
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1761648508 8213325 7fd20752ab46ff9aa583e4973d7433df ""
"figures/fig_auditory_pathway.pdf" 1771593904.14638 1153923 3df8539421fd21dc866cc8d320bd9b1d ""
"figures/fig_feat_stages.pdf" 1774002994.98767 11091006 565fe951f1255c121429a060082398f5 ""
"figures/fig_invariance_full.pdf" 1773819860.38414 149803772 fccb17ff409abc968506436f5f2a988b ""
"figures/fig_invariance_log_hp.pdf" 1774003683.58788 575653 1d22d01e8ec1887d589b6c390cb525a5 ""
"figures/fig_invariance_full.pdf" 1774271483.89842 149796490 a2dd04969d8a98c63c3653d20848c0b6 ""
"figures/fig_invariance_log_hp.pdf" 1774270814.43169 544402 7a2def404adc93a3e18fa8b309d452be ""
"figures/fig_invariance_thresh_lp_single.pdf" 1773738083.70309 580357 3681b066ae31e650d9261f435fcd92af ""
"figures/fig_invariance_thresh_lp_single_noise.pdf" 1773744879.7418 944314 a7ad50e5da0a6fee3e412405112b2452 ""
"figures/fig_invariance_thresh_lp_single_noise.pdf" 1774271693.79875 944238 eae31012249660340999b8b5ad139ae2 ""
"figures/fig_invariance_thresh_lp_species.pdf" 1773741140.93995 47573 9dd8a2281ce467803dd2a7b74ff3373e ""
"figures/fig_noise_env_sd_conversion.pdf" 1773997868.36537 46476 7c9bed06eeb2454123a52c7edcf50a9f ""
"figures/fig_noise_env_sd_conversion.pdf" 1774256952.42051 45466 671a2b8fbf72b4eba6b970b4421f2521 ""
"figures/fig_pre_stages.pdf" 1774002992.74268 449426 5762be15627fe5d8b6d108b7ea18db44 ""
"main.aux" 1774003703.5907 15511 e97ecd7b1fe5a4dcc728b64236d3ed04 "pdflatex"
"main.bbl" 1773934382.23323 91039 1380dc8c93d2855fdb132cc5a40ad52f "biber main"
"main.run.xml" 1774003703.5967 2335 a049bc26a7f032e842ce55de5bc38328 "pdflatex"
"main.tex" 1773934444.28996 48517 9087d4f689a47c904bde7fa096405f41 ""
"main.aux" 1774276586.2645 15775 9d5556b7cec6642ec926c3da8ab827e7 "pdflatex"
"main.bbl" 1774276462.69945 91039 1380dc8c93d2855fdb132cc5a40ad52f "biber main"
"main.run.xml" 1774276586.2705 2335 a049bc26a7f032e842ce55de5bc38328 "pdflatex"
"main.tex" 1774276584.74351 48814 dd2ac1d2321e0ebfabfa83fbfcca1664 ""
(generated)
"main.aux"
"main.bcf"

View File

@@ -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) 20 MAR 2026 11:48
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2025.10.28) 23 MAR 2026 15:36
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
@@ -702,29 +702,29 @@ LaTeX Font Info: Trying to load font information for U+msb on input line 41.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
Overfull \hbox (54.40451pt too wide) in paragraph at lines 121--152
Overfull \hbox (54.40451pt too wide) in paragraph at lines 127--158
\OT1/cmr/m/n/12 and eval-u-a-tion ([]), sender lo-cal-iza-tion ([]),
[]
Overfull \hbox (9.21051pt too wide) in paragraph at lines 121--152
Overfull \hbox (9.21051pt too wide) in paragraph at lines 127--158
\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}] [2]
Overfull \hbox (42.86342pt too wide) in paragraph at lines 217--278
Overfull \hbox (42.86342pt too wide) in paragraph at lines 223--284
\OT1/cmr/m/n/12 and grasshop-pers ([]; re-view on both: []).
[]
Overfull \hbox (3.29253pt too wide) in paragraph at lines 217--278
Overfull \hbox (3.29253pt too wide) in paragraph at lines 223--284
[]\OT1/cmr/m/n/12 ; []). The fit-ted sig-moidal
[]
[3]
Overfull \hbox (41.1838pt too wide) in paragraph at lines 311--346
Overfull \hbox (41.1838pt too wide) in paragraph at lines 317--352
\OT1/cmr/m/n/12 for con-spe-cific song recog-ni-tion and re-sponse ini-ti-a-tion ([];
[]
@@ -732,10 +732,10 @@ Overfull \hbox (41.1838pt too wide) in paragraph at lines 311--346
<figures/fig_auditory_pathway.pdf, id=22, 585.5577pt x 627.38327pt>
File: figures/fig_auditory_pathway.pdf Graphic file (type pdf)
<use figures/fig_auditory_pathway.pdf>
Package pdftex.def Info: figures/fig_auditory_pathway.pdf used on input line 349.
Package pdftex.def Info: figures/fig_auditory_pathway.pdf used on input line 355.
(pdftex.def) Requested size: 483.69687pt x 518.2677pt.
Overfull \hbox (65.93214pt too wide) in paragraph at lines 372--378
Overfull \hbox (65.93214pt too wide) in paragraph at lines 378--384
\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 ([];
[]
@@ -750,10 +750,10 @@ Overfull \vbox (0.8319pt too high) has occurred while \output is active []
<figures/fig_pre_stages.pdf, id=1027, 910.48819pt x 455.2441pt>
File: figures/fig_pre_stages.pdf Graphic file (type pdf)
<use figures/fig_pre_stages.pdf>
Package pdftex.def Info: figures/fig_pre_stages.pdf used on input line 421.
Package pdftex.def Info: figures/fig_pre_stages.pdf used on input line 427.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[7] [8 <./figures/fig_pre_stages.pdf>]
Overfull \hbox (42.89445pt too wide) in paragraph at lines 514--523
Overfull \hbox (42.89445pt too wide) in paragraph at lines 520--529
\OT1/cmr/m/n/12 glion ([]; []; []).
[]
@@ -761,35 +761,35 @@ Overfull \hbox (42.89445pt too wide) in paragraph at lines 514--523
<figures/fig_feat_stages.pdf, id=1096, 910.48819pt x 455.2441pt>
File: figures/fig_feat_stages.pdf Graphic file (type pdf)
<use figures/fig_feat_stages.pdf>
Package pdftex.def Info: figures/fig_feat_stages.pdf used on input line 535.
Package pdftex.def Info: figures/fig_feat_stages.pdf used on input line 541.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[10 <./figures/fig_feat_stages.pdf>] [11]
<figures/fig_invariance_log_hp.pdf, id=1141, 910.48819pt x 455.2441pt>
<figures/fig_invariance_log_hp.pdf, id=1141, 895.57933pt x 469.40372pt>
File: figures/fig_invariance_log_hp.pdf Graphic file (type pdf)
<use figures/fig_invariance_log_hp.pdf>
Package pdftex.def Info: figures/fig_invariance_log_hp.pdf used on input line 625.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
Package pdftex.def Info: figures/fig_invariance_log_hp.pdf used on input line 631.
(pdftex.def) Requested size: 483.69687pt x 253.52437pt.
<figures/fig_invariance_thresh_lp_single.pdf, id=1142, 910.48819pt x 455.2441pt>
File: figures/fig_invariance_thresh_lp_single.pdf Graphic file (type pdf)
<use figures/fig_invariance_thresh_lp_single.pdf>
Package pdftex.def Info: figures/fig_invariance_thresh_lp_single.pdf used on input line 654.
Package pdftex.def Info: figures/fig_invariance_thresh_lp_single.pdf used on input line 662.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[12 <./figures/fig_invariance_log_hp.pdf>]
<figures/fig_invariance_thresh_lp_single_noise.pdf, id=1195, 910.48819pt x 455.2441pt>
<figures/fig_invariance_thresh_lp_single_noise.pdf, id=1199, 910.48819pt x 455.2441pt>
File: figures/fig_invariance_thresh_lp_single_noise.pdf Graphic file (type pdf)
<use figures/fig_invariance_thresh_lp_single_noise.pdf>
Package pdftex.def Info: figures/fig_invariance_thresh_lp_single_noise.pdf used on input line 677.
Package pdftex.def Info: figures/fig_invariance_thresh_lp_single_noise.pdf used on input line 685.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[13 <./figures/fig_invariance_thresh_lp_single.pdf>] [14 <./figures/fig_invariance_thresh_lp_single_noise.pdf>]
<figures/fig_invariance_thresh_lp_species.pdf, id=1312, 910.48819pt x 455.2441pt>
<figures/fig_invariance_thresh_lp_species.pdf, id=1313, 910.48819pt x 455.2441pt>
File: figures/fig_invariance_thresh_lp_species.pdf Graphic file (type pdf)
<use figures/fig_invariance_thresh_lp_species.pdf>
Package pdftex.def Info: figures/fig_invariance_thresh_lp_species.pdf used on input line 701.
Package pdftex.def Info: figures/fig_invariance_thresh_lp_species.pdf used on input line 709.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
<figures/fig_invariance_full.pdf, id=1313, 910.48819pt x 455.2441pt>
<figures/fig_invariance_full.pdf, id=1314, 910.48819pt x 455.2441pt>
File: figures/fig_invariance_full.pdf Graphic file (type pdf)
<use figures/fig_invariance_full.pdf>
Package pdftex.def Info: figures/fig_invariance_full.pdf used on input line 711.
Package pdftex.def Info: figures/fig_invariance_full.pdf used on input line 719.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[15
@@ -797,7 +797,7 @@ Package pdftex.def Info: figures/fig_invariance_full.pdf used on input line 711
<figures/fig_noise_env_sd_conversion.pdf, id=1429, 910.48819pt x 455.2441pt>
File: figures/fig_noise_env_sd_conversion.pdf Graphic file (type pdf)
<use figures/fig_noise_env_sd_conversion.pdf>
Package pdftex.def Info: figures/fig_noise_env_sd_conversion.pdf used on input line 870.
Package pdftex.def Info: figures/fig_noise_env_sd_conversion.pdf used on input line 878.
(pdftex.def) Requested size: 483.69687pt x 241.84782pt.
[18] [19 <./figures/fig_noise_env_sd_conversion.pdf>] (./main.aux)
***********
@@ -809,17 +809,17 @@ Package logreq Info: Writing requests to 'main.run.xml'.
)
Here is how much of TeX's memory you used:
20765 strings out of 474222
448444 string characters out of 5748732
20769 strings out of 474222
448460 string characters out of 5748732
1937975 words of memory out of 5000000
42755 multiletter control sequences out of 15000+600000
42759 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,1214b,1732s stack positions out of 10000i,1000n,20000p,200000b,200000s
94i,19n,93p,1478b,1732s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb>
Output written on main.pdf (19 pages, 164827394 bytes).
Output written on main.pdf (19 pages, 164788506 bytes).
PDF statistics:
1568 PDF objects out of 1728 (max. 8388607)
1566 PDF objects out of 1728 (max. 8388607)
861 compressed objects within 9 object streams
0 named destinations out of 1000 (max. 500000)
58 words of extra memory for PDF output out of 10000 (max. 10000000)

BIN
main.pdf

Binary file not shown.

Binary file not shown.

View File

@@ -47,6 +47,12 @@
% \newcommand{\eref}[1]{\mbox{\cref{#1}}}
% \newcommand{\eref}[1]{\mbox{Eq.\,\ref{#1}}}
% Subplot lettering:
\newcommand{\figa}{\textbf{a}}
\newcommand{\figb}{\textbf{b}}
\newcommand{\figc}{\textbf{c}}
\newcommand{\figd}{\textbf{d}}
% Math shorthands - Standard symbols:
\newcommand{\dec}{\log_{10}} % Logarithm base 10
\newcommand{\infint}{\int_{-\infty}^{+\infty}} % Indefinite integral
@@ -625,23 +631,25 @@ the signal for reliable song recognition.
\includegraphics[width=\textwidth]{figures/fig_invariance_log_hp.pdf}
\caption{\textbf{Intensity invariance by logarithmic compression and
adaptation is restricted by the noise floor.}
Envelope $\env(t)$ is transformed into logarihmically
compressed envelope $\db(t)$ and further into
intensity-adapted envelope $\adapt(t)$. Indicated time
scale is $5\,$s for both \textbf{a} and \textbf{b} (black
bars).
\textbf{a}:~Ideally, if $\env(t)$ consists only of song
component $\soc(t)$ rescaled by $\sca$, then $\adapt(t)$
is fully intensity-invariant across all $\sca$.
\textbf{b}:~In practice, $\env(t)$ also contains
fixed-scale noise component $\noc(t)$, which limits the
effective intensity invariance of $\adapt(t)$ to
sufficiently large $\sca$.
\textbf{c}:~Ratios of the SD of each representation in
\textbf{b} at a given $\sca$ relative to the SD of the
representation for $\sca=0$ (solid lines). The same ratios
for the ideal $\adapt(t)$ in \textbf{a} are shown for
comparison (dashed line).
Synthetic input $\filt(t)$ consists of song component
$\soc(t)$ scaled by $\sca$ with (\figc{} and \figd) or
without (\figa{} and \figb) additive noise component
$\noc(t)$. Input $\filt(t)$ is transformed into envelope
$\env(t)$, logarithmically compressed envelope $\db(t)$,
and intensity-adapted envelope $\adapt(t)$.
\textbf{Left}:~$\env(t)$, $\db(t)$, and $\adapt(t)$ for
different scales $\sca$.
\textbf{Right}:~Ratios of the standard deviation of
$\env(t)$, $\db(t)$, and $\adapt(t)$ relative to the
respective reference standard deviation for input
$\filt(t)=\noc(t)$.
\figa{} and \figb:~Ideally, if $\filt(t)=\sca\cdot\soc(t)$, then
$\adapt(t)$ is intensity-invariant across all $\sca$.
\figc{} and \figd:~In practice, if
$\filt(t)=\sca\cdot\soc(t)+\noc(t)$, the intensity
invariance of $\adapt(t)$ is limited to sufficiently large
$\sca$. Shaded area indicates saturation of $\adapt(t)$ at
$95\,\%$ curve span.
}
\label{fig:inv_log-hp}
\end{figure}

View File

@@ -17,7 +17,7 @@ fig_kwargs = dict(
gridspec_kw=dict(
wspace=0,
hspace=0.1,
left=0.065,
left=0.09,
right=0.98,
bottom=0.08,
top=0.95,
@@ -92,7 +92,7 @@ fig.suptitle(**title_kwargs)
ax1.grid(**grid_line_kwargs)
ax1.set_xlim(data['scales'][0], data['scales'][-1])
ax1.set_xscale('symlog', linthresh=data['scales'][1], linscale=0.5)
ax1.set_ylim(0.4, 1.2)
ax1.set_ylim(0, 0.1)
ylabel(ax1, ylabels['top'], transform=fig.transFigure, **ylab_kwargs)
ax2.grid(**grid_line_kwargs)
xlabel(ax2, xlabels['bottom'], transform=fig.transFigure, **xlab_kwargs)

View File

@@ -70,6 +70,14 @@ big_grid_kwargs = dict(
)
# PLOT SETTINGS:
fs = dict(
lab_norm=16,
lab_tex=20,
letter=22,
tit_norm=16,
tit_tex=20,
bar=16,
)
colors = load_colors('../data/stage_colors.npz')
colors['raw'] = "#000000"
lw = dict(
@@ -100,26 +108,26 @@ ylabels = dict(
)
xlab_snip_kwargs = dict(
y=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
xlab_big_kwargs = dict(
y=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
ylab_snip_kwargs = dict(
x=0,
fontsize=20,
fontsize=fs['lab_tex'],
rotation=0,
ha='left',
va='center'
)
ylab_big_kwargs = dict(
x=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='top',
)
@@ -137,14 +145,14 @@ title_kwargs = dict(
yref=1,
ha='center',
va='top',
fontsize=16,
fontsize=fs['tit_norm'],
)
letter_snip_kwargs = dict(
x=0.02,
y=1,
ha='left',
va='top',
fontsize=22,
fontsize=fs['letter'],
fontweight='bold'
)
letter_big_kwargs = dict(
@@ -152,15 +160,25 @@ letter_big_kwargs = dict(
y=1,
ha='left',
va='top',
fontsize=22,
fontsize=fs['letter'],
fontweight='bold'
)
bar_time = 5
bar_kwargs = dict(
y0=0.8,
y1=0.9,
dur=bar_time,
y0=-0.25,
y1=-0.1,
xshift=1,
color='k',
lw=0,
clip_on=False,
text_pos=(-0.1, 0.5),
text_str=f'${bar_time}\\,\\text{{s}}$',
text_kwargs=dict(
fontsize=fs['bar'],
ha='right',
va='center',
)
)
@@ -197,8 +215,7 @@ for data_path in data_paths:
if stages[i] != 'bi':
ax.yaxis.set_major_locator(plt.MultipleLocator(yloc[stages[i]]))
snip_axes[i, j] = ax
super_xlabel(xlabels['snip'], snip_subfig, snip_axes[-1, 0], snip_axes[-1, -1], **xlab_snip_kwargs)
time_bar(snip_axes[0, 0], bar_time, **bar_kwargs)
time_bar(snip_axes[-1, -1], **bar_kwargs)
# Prepare single analysis axis:
big_subfig = fig.add_subfigure(super_grid[subfig_specs['big']])

View File

@@ -7,7 +7,7 @@ from thunderhopper.modeltools import load_data
from color_functions import load_colors
from plot_functions import hide_axis, ylimits, xlabel, ylabel, hide_ticks,\
plot_line, strip_zeros, time_bar, zoom_inset,\
letter_subplot, letter_subplots, title_subplot
letter_subplot, title_subplot
from IPython import embed
def add_snip_axes(fig, grid_kwargs):
@@ -28,7 +28,6 @@ def plot_snippets(axes, time, snippets, ymin=None, ymax=None, **kwargs):
# GENERAL SETTINGS:
compute_ratios = True
target = 'Omocestus_rufipes'
data_paths = search_files(target, excl='noise', dir='../data/inv/log_hp/')
stages = ['env', 'log', 'inv']
@@ -37,10 +36,14 @@ load_kwargs = dict(
keywords=['scales', 'snip', 'measure']
)
save_path = '../figures/fig_invariance_log_hp.pdf'
compute_ratios = True
show_diag = True
show_noise = True
if compute_ratios:
ref_data = load_data('../data/processed/white_noise_sd-1.npz', files=stages)[0]
ref_measures = {k: v.std() for k, v in ref_data.items() if not k.endswith('rate')}
# GRAPH SETTINGS:
fig_kwargs = dict(
figsize=(32/2.54, 16/2.54),
@@ -60,22 +63,35 @@ subfig_specs = dict(
noise=(1, slice(0, -1)),
big=(slice(None), -1),
)
snip_grid_kwargs = dict(
block_height = 0.8
edge_padding = 0.08
pure_grid_kwargs = dict(
nrows=len(stages),
ncols=None,
wspace=0.1,
hspace=0.15,
left=0.16,
right=0.95,
bottom=0.1,
top=0.94,
bottom=1 - block_height - edge_padding,
top=1 - edge_padding,
height_ratios=[1, 2, 1]
)
noise_grid_kwargs = dict(
nrows=len(stages),
ncols=None,
wspace=0.1,
hspace=0.15,
left=0.16,
right=0.95,
bottom=edge_padding,
top=edge_padding + block_height,
height_ratios=[1, 2, 1]
)
big_grid_kwargs = dict(
nrows=2,
ncols=1,
wspace=0,
hspace=0.1,
hspace=0.3,
left=0.19,
right=0.96,
bottom=0.09,
@@ -94,9 +110,10 @@ fs = dict(
letter=22,
tit_norm=16,
tit_tex=20,
bar=16,
)
colors = load_colors('../data/stage_colors.npz')
lw_snippets = 0.5
lw_snippets = 1
lw_big = 3
xlabels = dict(
big='scale $\\alpha$',
@@ -105,7 +122,7 @@ ylabels = dict(
env='$x_{\\text{env}}$',
log='$x_{\\text{dB}}$',
inv='$x_{\\text{adapt}}$',
big='$\\sigma_{\\alpha}\\,/\\,\\sigma_{0}$',
big='$\\sigma_{\\alpha}\\,/\\,\\sigma_{\\eta}$',
)
xlab_big_kwargs = dict(
y=0,
@@ -121,7 +138,7 @@ ylab_snip_kwargs = dict(
va='center',
)
ylab_big_kwargs = dict(
x=0,
x=0.05,
fontsize=fs['lab_tex'],
ha='center',
va='top',
@@ -133,23 +150,23 @@ yloc = dict(
)
title_kwargs = dict(
x=0.5,
yref=1,
y=1,
ha='center',
va='top',
va='bottom',
fontsize=fs['tit_norm'],
)
letter_snip_kwargs = dict(
x=0,
y=1,
yref=0.5,
ha='left',
va='top',
va='center',
fontsize=fs['letter'],
)
letter_big_kwargs = dict(
x=0,
yref=letter_snip_kwargs['y'],
x=0.05,
yref=letter_snip_kwargs['yref'],
ha='left',
va='top',
va='center',
fontsize=fs['letter'],
)
zoom_inset_bounds = [0.1, 0.2, 0.8, 0.6]
@@ -164,13 +181,31 @@ zoom_kwargs = dict(
lw=1,
alpha=1,
)
inset_tick_kwargs = dict(
axis='y',
length=3,
pad=1,
left=False,
labelleft=False,
right=True,
labelright=True,
)
bar_time = 5
bar_kwargs = dict(
y0=-0.2,
y1=-0.05,
dur=bar_time,
y0=-0.25,
y1=-0.1,
xshift=1,
color='k',
lw=0,
clip_on=False,
text_pos=(-0.1, 0.5),
text_str=f'${bar_time}\\,\\text{{s}}$',
text_kwargs=dict(
fontsize=fs['bar'],
ha='right',
va='center',
)
)
diag_kwargs = dict(
c=(0.75, 0.75, 0.75),
@@ -178,6 +213,13 @@ diag_kwargs = dict(
ls='--',
zorder=1.9,
)
noise_rel_thresh = 0.95
noise_kwargs = dict(
fc=(0.9, 0.9, 0.9),
ec='none',
lw=0,
zorder=1.5,
)
# EXECUTION:
for data_path in data_paths:
@@ -192,37 +234,39 @@ for data_path in data_paths:
# Prepare overall graph:
fig = plt.figure(**fig_kwargs)
super_grid = fig.add_gridspec(**super_grid_kwargs)
fig.canvas.draw()
# Prepare pure-song snippet axes:
snip_grid_kwargs['ncols'] = pure_data['example_scales'].size
pure_grid_kwargs['ncols'] = pure_data['example_scales'].size
pure_subfig = fig.add_subfigure(super_grid[subfig_specs['pure']])
pure_axes = add_snip_axes(pure_subfig, snip_grid_kwargs)
pure_axes = add_snip_axes(pure_subfig, pure_grid_kwargs)
for ax, stage in zip(pure_axes[:, 0], stages):
ax.yaxis.set_major_locator(plt.MultipleLocator(yloc[stage]))
ylabel(ax, ylabels[stage], **ylab_snip_kwargs,
transform=pure_subfig.transSubfigure)
for ax, scale in zip(pure_axes[0, :], pure_data['example_scales']):
title_subplot(ax, f'$\\alpha={strip_zeros(scale)}$', ref=pure_subfig, **title_kwargs)
pure_title = title_subplot(ax, f'$\\alpha={strip_zeros(scale)}$', **title_kwargs)
letter_subplot(pure_subfig, 'a', ref=pure_title, **letter_snip_kwargs)
pure_inset = pure_axes[0, 0].inset_axes(zoom_inset_bounds)
pure_inset.spines[:].set(visible=True, lw=zoom_kwargs['lw'])
pure_inset.tick_params(**inset_tick_kwargs)
hide_ticks(pure_inset, 'bottom', ticks=False)
hide_ticks(pure_inset, 'left', ticks=False)
# Prepare noise-song snippet axes:
snip_grid_kwargs['ncols'] = noise_data['example_scales'].size
noise_grid_kwargs['ncols'] = noise_data['example_scales'].size
noise_subfig = fig.add_subfigure(super_grid[subfig_specs['noise']])
noise_axes = add_snip_axes(noise_subfig, snip_grid_kwargs)
noise_axes = add_snip_axes(noise_subfig, noise_grid_kwargs)
for ax, stage in zip(noise_axes[:, 0], stages):
ax.yaxis.set_major_locator(plt.MultipleLocator(yloc[stage]))
ylabel(ax, ylabels[stage], **ylab_snip_kwargs,
transform=noise_subfig.transSubfigure)
for ax, scale in zip(noise_axes[0, :], noise_data['example_scales']):
title_subplot(ax, f'$\\alpha={strip_zeros(scale)}$', ref=noise_subfig, **title_kwargs)
letter_subplots([pure_subfig, noise_subfig], 'ac', **letter_snip_kwargs)
noise_title = title_subplot(ax, f'$\\alpha={strip_zeros(scale)}$', **title_kwargs)
letter_subplot(noise_subfig, 'c', ref=noise_title, **letter_snip_kwargs)
noise_inset = noise_axes[0, 0].inset_axes(zoom_inset_bounds)
noise_inset.spines[:].set(visible=True, lw=zoom_kwargs['lw'])
noise_inset.tick_params(**inset_tick_kwargs)
hide_ticks(noise_inset, 'bottom', ticks=False)
hide_ticks(noise_inset, 'left', ticks=False)
# Prepare analysis axes:
big_subfig = fig.add_subfigure(super_grid[subfig_specs['big']])
@@ -238,17 +282,17 @@ for data_path in data_paths:
ylabel(ax, ylabels['big'], transform=big_subfig.transSubfigure, **ylab_big_kwargs)
if i == 0:
hide_ticks(ax, 'bottom')
letter_subplot(big_subfig, 'b', ref=pure_subfig, **letter_big_kwargs)
letter_subplot(big_subfig, 'b', ref=pure_title, **letter_big_kwargs)
else:
xlabel(ax, xlabels['big'], transform=big_subfig.transSubfigure, **xlab_big_kwargs)
letter_subplot(big_subfig, 'd', ref=noise_subfig, **letter_big_kwargs)
letter_subplot(big_subfig, 'd', ref=noise_title, **letter_big_kwargs)
big_axes[i] = ax
# Plot pure-song envelope snippets:
handle = plot_snippets(pure_axes[0, :], t_full, pure_data['snip_env'],
ymin=0, c=colors['env'], lw=lw_snippets)[0]
zoom_inset(pure_axes[0, 0], pure_inset, handle, transform=pure_axes[0, 0].transAxes, **zoom_kwargs)
# Plot pure-song logarithmic snippets:
plot_snippets(pure_axes[1, :], t_full, pure_data['snip_log'],
c=colors['log'], lw=lw_snippets)
@@ -258,20 +302,23 @@ for data_path in data_paths:
c=colors['inv'], lw=lw_snippets)
# Plot noise-song envelope snippets:
ymin, ymax = pure_axes[0, 0].get_ylim()
handle = plot_snippets(noise_axes[0, :], t_full, noise_data['snip_env'],
ymin=0, c=colors['env'], lw=lw_snippets)[0]
ymin, ymax, c=colors['env'], lw=lw_snippets)[0]
zoom_inset(noise_axes[0, 0], noise_inset, handle, transform=noise_axes[0, 0].transAxes, **zoom_kwargs)
# Plot noise-song logarithmic snippets:
ymin, ymax = pure_axes[1, 0].get_ylim()
plot_snippets(noise_axes[1, :], t_full, noise_data['snip_log'],
c=colors['log'], lw=lw_snippets)
ymin, ymax, c=colors['log'], lw=lw_snippets)
# Plot noise-song invariant snippets:
ymin, ymax = pure_axes[2, 0].get_ylim()
plot_snippets(noise_axes[2, :], t_full, noise_data['snip_inv'],
c=colors['inv'], lw=lw_snippets)
ymin, ymax, c=colors['inv'], lw=lw_snippets)
# Indicate time scale:
time_bar(noise_axes[2, -1], bar_time, **bar_kwargs)
time_bar(noise_axes[-1, -1], **bar_kwargs)
if compute_ratios:
# Relate pure-song measures to zero scale:
@@ -293,12 +340,25 @@ for data_path in data_paths:
big_axes[1].plot(noise_scales, noise_data['measure_log'], c=colors['log'], lw=lw_big)
big_axes[1].plot(noise_scales, noise_data['measure_inv'], c=colors['inv'], lw=lw_big)
# Indicate diagonal:
big_axes[0].plot(pure_scales, pure_scales, **diag_kwargs)
big_axes[1].plot(noise_scales, noise_scales, **diag_kwargs)
if show_diag:
# Indicate diagonal:
big_axes[0].plot(pure_scales, pure_scales, **diag_kwargs)
big_axes[1].plot(noise_scales, noise_scales, **diag_kwargs)
if show_noise:
# Indicate noise floor:
if compute_ratios:
span_measure = noise_data['measure_inv'][-1] - ref_measures['inv']
thresh_measure = ref_measures['inv'] + noise_rel_thresh * span_measure
else:
span_measure = noise_data['measure_inv'][-1] - noise_data['measure_inv'][0]
thresh_measure = noise_data['measure_inv'][0] + noise_rel_thresh * span_measure
thresh_ind = np.nonzero(noise_data['measure_inv'] < thresh_measure)[0][-1]
thresh_scale = noise_scales[thresh_ind]
big_axes[1].axvspan(noise_scales[0], thresh_scale, **noise_kwargs)
if save_path is not None:
fig.savefig(save_path)
fig.savefig(save_path, bbox_inches='tight')
plt.show()
print('Done.')

View File

@@ -1,7 +1,6 @@
import plotstyle_plt
import numpy as np
import matplotlib.pyplot as plt
from itertools import product
from thunderhopper.filetools import search_files
from thunderhopper.modeltools import load_data
from thunderhopper.filtertools import find_kern_specs
@@ -116,6 +115,14 @@ snip_specs = dict(
inset_bounds = [1.02, 0, 0.2, 1]
# PLOT SETTINGS:
fs = dict(
lab_norm=16,
lab_tex=20,
letter=22,
tit_norm=16,
tit_tex=20,
bar=16,
)
colors = load_colors('../data/stage_colors.npz')
color_factors = [0.2, -0.2]
lw = dict(
@@ -136,32 +143,32 @@ ylabels = dict(
)
xlab_snip_kwargs = dict(
y=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
xlab_big_kwargs = dict(
y=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
ylab_snip_kwargs = dict(
x=0.08,
fontsize=20,
fontsize=fs['lab_tex'],
rotation=0,
ha='right',
va='center',
)
ylab_super_kwargs = dict(
x=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='left',
va='center',
)
ylab_big_kwargs = dict(
x=0,
fontsize=20,
fontsize=fs['lab_norm'],
ha='center',
va='top',
)
@@ -176,21 +183,21 @@ title_kwargs = dict(
yref=1,
ha='center',
va='top',
fontsize=16,
fontsize=fs['tit_norm'],
)
letter_snip_kwargs = dict(
x=0,
y=1,
ha='left',
va='top',
fontsize=22,
fontsize=fs['letter'],
)
letter_big_kwargs = dict(
x=0,
yref=letter_snip_kwargs['y'],
ha='left',
va='top',
fontsize=22,
fontsize=fs['letter'],
)
dist_kwargs = dict(
nbins=50,
@@ -203,10 +210,20 @@ dist_fill_kwargs = dict(
)
bar_time = 0.1
bar_kwargs = dict(
y0=0.3,
y1=0.4,
dur=bar_time,
y0=-0.25,
y1=-0.1,
xshift=1,
color='k',
lw=0,
clip_on=False,
text_pos=(-0.1, 0.5),
text_str=f'${int(1000 * bar_time)}\\,\\text{{ms}}$',
text_kwargs=dict(
fontsize=fs['bar'],
ha='right',
va='center',
)
)
kernel = np.array([
[1, 0.008],
@@ -264,13 +281,12 @@ for data_path in data_paths:
ylabel(ax, ylabels[stage], **ylab_snip_kwargs,
transform=snip_subfig.transSubfigure)
if i == 0:
axes[0, 0].set_xlim(t_full[0], t_full[-1])
time_bar(axes[0, 0], bar_time, **bar_kwargs)
for ax, scale in zip(axes[0, :], data['example_scales']):
title = f'$\\alpha={strip_zeros(scale)}$'
title_subplot(ax, title, **title_kwargs, ref=fig)
elif i == data['threshs'].size - 1:
super_xlabel(xlabels['snip'], snip_subfig, axes[-1, 0], axes[-1, -1], **xlab_snip_kwargs)
elif i == data['threshs'].size - 1:
axes[-1, -1].set_xlim(t_full[0], t_full[-1])
time_bar(axes[-1, -1], **bar_kwargs)
letter_subplots(snip_axes.keys(), **letter_snip_kwargs)
# Prepare analysis axis:

View File

@@ -200,6 +200,14 @@ inset_kwargs = dict(
)
# PLOT SETTINGS:
fs = dict(
lab_norm=16,
lab_tex=20,
letter=22,
tit_norm=16,
tit_tex=20,
bar=16,
)
base_color = load_colors('../data/stage_colors.npz')['feat']
spec_cmaps = [
'Reds',
@@ -224,31 +232,31 @@ ylabels = dict(
)
xlab_spec_kwargs = dict(
y=0,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
xlab_big_kwargs = dict(
y=0,
fontsize=20,
fontsize=fs['lab_tex'],
ha='center',
va='bottom',
)
ylab_spec_kwargs = dict(
x=0,
fontsize=20,
fontsize=fs['lab_tex'],
ha='left',
va='center',
)
ylab_big_kwargs = dict(
x=0.03,
fontsize=20,
fontsize=fs['lab_tex'],
ha='center',
va='center',
)
ylab_cbar_kwargs = dict(
x=1,
fontsize=16,
fontsize=fs['lab_norm'],
ha='center',
va='bottom',
)
@@ -264,14 +272,14 @@ letter_spec_kwargs = dict(
yref=1,
ha='center',
va='top',
fontsize=22,
fontsize=fs['letter'],
)
letter_big_kwargs = dict(
x=0,
yref=1,
ha='center',
va='top',
fontsize=22,
fontsize=fs['letter'],
)
time_bar_kwargs = dict(
dur=0.05,

View File

@@ -16,41 +16,56 @@ def hide_axis(ax, side='bottom'):
which='both', **params)
return None
def get_trans_artist(artist):
artist_type = type(artist).__name__
if artist_type == 'Axes':
return artist.transAxes
elif artist_type == 'Figure':
return artist.transFigure
elif artist_type == 'Subfigure':
return artist.transSubfigure
elif hasattr(artist, 'bbox'):
return BboxTransformTo(artist.bbox)
renderer = artist.get_figure(root=True).canvas.get_renderer()
if hasattr(artist, 'get_window_extent'):
return BboxTransformTo(artist.get_window_extent(renderer))
elif hasattr(artist, 'get_tightbbox'):
return BboxTransformTo(artist.get_tightbbox(renderer))
raise ValueError('Artist does not have a bounding box to use as transform.')
def title_subplot(artist, title, x=0.5, y=1.0, xref=None, yref=None, ref=None,
ha='center', va='bottom', fontsize=16, fontweight='normal', **kwargs):
trans_artist = BboxTransformTo(artist.bbox)
trans_artist = get_trans_artist(artist)
if xref is not None or yref is not None:
transform = BboxTransformTo(ref.bbox) + trans_artist.inverted()
transform = get_trans_artist(ref) + trans_artist.inverted()
if xref is not None:
x = transform.transform((xref, 0))[0]
if yref is not None:
y = transform.transform((0, yref))[1]
artist.text(x, y, title, transform=trans_artist, ha=ha, va=va,
fontsize=fontsize, fontweight=fontweight, **kwargs)
return None
return artist.text(x, y, title, transform=trans_artist, ha=ha, va=va,
fontsize=fontsize, fontweight=fontweight, **kwargs)
def letter_subplot(artist, label, x=None, y=None, xref=None, yref=None, ref=None,
ha='left', va='bottom', fontsize=16, fontweight='bold', **kwargs):
trans_artist = BboxTransformTo(artist.bbox)
trans_artist = get_trans_artist(artist)
if x is None or y is None:
transform = BboxTransformTo(ref.bbox) + trans_artist.inverted()
transform = get_trans_artist(ref) + trans_artist.inverted()
if x is None:
x = transform.transform([xref, 0])[0]
if y is None:
y = transform.transform([0, yref])[1]
artist.text(x, y, label, transform=trans_artist, ha=ha, va=va,
fontsize=fontsize, fontweight=fontweight, **kwargs)
return None
return artist.text(x, y, label, transform=trans_artist, ha=ha, va=va,
fontsize=fontsize, fontweight=fontweight, **kwargs)
def letter_subplots(artists, labels=None, x=None, y=None, xref=None, yref=None, ref=None,
ha='left', va='bottom', fontsize=16, fontweight='bold', **kwargs):
if labels is None:
labels = string.ascii_lowercase
handles = []
for artist, label in zip(artists, labels):
letter_subplot(artist, label, x, y, xref, yref, ref=ref, ha=ha, va=va,
fontsize=fontsize, fontweight=fontweight, **kwargs)
return None
handles.append(letter_subplot(artist, label, x, y, xref, yref, ref,
ha=ha, va=va, fontsize=fontsize, fontweight=fontweight, **kwargs))
return handles
def xlimits(time, ax=None, minval=None, maxval=None, pad=0.05):
limits = [minval, maxval]
@@ -83,34 +98,32 @@ def ylimits(signal, ax=None, minval=None, maxval=None, pad=0.05):
return limits
def xlabel(ax, label, x=None, y=-0.1, fontsize=20, transform=None, **kwargs):
ax.set_xlabel(label, fontsize=fontsize, **kwargs)
if x is None:
x = 0.5
if transform is not None:
x = (ax.transAxes + transform.inverted()).transform((x, 0))[0]
ax.xaxis.set_label_coords(x, y, transform=transform)
return None
return ax.set_xlabel(label, fontsize=fontsize, **kwargs)
def ylabel(ax, label, x=-0.2, y=None, fontsize=20, transform=None, **kwargs):
ax.set_ylabel(label, fontsize=fontsize, **kwargs)
if y is None:
y = 0.5
if transform is not None:
y = (ax.transAxes + transform.inverted()).transform((0, y))[1]
ax.yaxis.set_label_coords(x, y, transform=transform)
return None
return ax.set_ylabel(label, fontsize=fontsize, **kwargs)
def super_xlabel(label, fig, left_ax, right_ax, y=0.005,
left_fig=None, right_fig=None, **kwargs):
left_x = left_ax.get_position().x0
right_x = right_ax.get_position().x1
if left_fig is not None or right_fig is not None:
trans_fig = BboxTransformTo(fig.bbox)
trans_fig = get_trans_artist(fig)
if left_fig is not None:
transform = BboxTransformTo(left_fig.bbox) + trans_fig.inverted()
transform = get_trans_artist(left_fig) + trans_fig.inverted()
left_x = transform.transform((left_x, 0))[0]
if right_fig is not None:
transform = BboxTransformTo(right_fig.bbox) + trans_fig.inverted()
transform = get_trans_artist(right_fig) + trans_fig.inverted()
right_x = transform.transform((right_x, 0))[0]
return fig.supxlabel(label, x=(left_x + right_x) / 2, y=y, **kwargs)
@@ -119,12 +132,12 @@ def super_ylabel(label, fig, low_ax, high_ax, x=0.005,
low_y = high_ax.get_position().y0
high_y = low_ax.get_position().y1
if low_fig is not None or high_fig is not None:
trans_fig = BboxTransformTo(fig.bbox)
trans_fig = get_trans_artist(fig)
if low_fig is not None:
transform = BboxTransformTo(low_fig.bbox) + trans_fig.inverted()
transform = get_trans_artist(low_fig) + trans_fig.inverted()
low_y = transform.transform((0, low_y))[1]
if high_fig is not None:
transform = BboxTransformTo(high_fig.bbox) + trans_fig.inverted()
transform = get_trans_artist(high_fig) + trans_fig.inverted()
high_y = transform.transform((0, high_y))[1]
return fig.supylabel(label, x=x, y=(low_y + high_y) / 2, **kwargs)
@@ -161,9 +174,8 @@ def indicate_zoom(fig, high_ax, low_ax, zoom_abs, **kwargs):
transform = low_ax.transData + fig.transFigure.inverted()
x0 = transform.transform((zoom_abs[0], 0))[0]
x1 = transform.transform((zoom_abs[1], 0))[0]
fig.add_artist(plt.Rectangle((x0, y0), x1 - x0, y1 - y0,
transform=fig.transFigure, **kwargs))
return None
return fig.add_artist(plt.Rectangle((x0, y0), x1 - x0, y1 - y0,
transform=fig.transFigure, **kwargs))
def assign_colors(handles, types, colors):
for handle, type_id in zip(handles, types):
@@ -187,22 +199,30 @@ def strip_zeros(num, right_digits=5):
return f'{left}.{right}'
return left
def time_bar(ax, dur, y0=0.9, y1=0.95, xshift=0.5, parent=None, **kwargs):
def time_bar(ax, dur, y0=0.9, y1=0.95, xshift=0.5, parent=None,
text_pos=None, text_str=None, text_kwargs={}, **kwargs):
if parent is None:
parent = ax
trans_parent = BboxTransformTo(parent.bbox)
kwargs['transform'] = trans_parent
trans_parent = get_trans_artist(parent)
transform = ax.transData + trans_parent.inverted()
t0 = ax.get_xlim()[0]
x0 = transform.transform((t0, 0))[0]
x1 = transform.transform((t0 + dur, 0))[0]
dur = x1 - x0
x0 = (1 - dur) * xshift
parent.add_artist(plt.Rectangle((x0, y0), dur, y1 - y0, **kwargs))
return None
rect = parent.add_artist(plt.Rectangle((x0, y0), dur, y1 - y0,
transform=trans_parent, **kwargs))
if text_pos is not None:
trans_bar = get_trans_artist(rect)
text_pos = (trans_bar + trans_parent.inverted()).transform(text_pos)
if text_str is None:
text_str = f'{dur:.2f} s'
t = parent.text(*text_pos, text_str, transform=trans_parent, **text_kwargs)
return rect, t
return rect
def zoom_inset(ax, inset, handle, x0=None, x1=None, y0=None, y1=None, ref='x',
transform = None,
transform=None,
low_left=False, up_left=False, low_right=False, up_right=False,
props=['c', 'lw', 'ls', 'zorder', 'alpha'], **kwargs):
if not kwargs:

View File

@@ -12,7 +12,7 @@ save_path = '../data/inv/noise_env/'
# ANALYSIS SETTINGS:
scales = np.geomspace(0.1, 10000, 200)
sd_inputs = np.arange(10.9, 11.1, 0.01)
sd_inputs = np.array([1.0])
n_trials = 10
tol_to_one = 0.1
@@ -32,15 +32,16 @@ signal /= signal[segment].std()
signal = signal[:, None] * scales[None, :]
# Prepare storage:
current_match = 0
storage = dict(
scales=scales,
n_trials=n_trials,
sd_factor=np.array([0.]),
trials=np.zeros((scales.size, n_trials), dtype=float),
mean=np.zeros(scales.size, dtype=float),
spread=np.zeros(scales.size, dtype=float),
)
if sd_inputs.size > 1:
current_match = 0
storage = dict(
scales=scales,
n_trials=n_trials,
sd_factor=np.array([0.]),
trials=np.zeros((scales.size, n_trials), dtype=float),
mean=np.zeros(scales.size, dtype=float),
spread=np.zeros(scales.size, dtype=float),
)
# Analyze piece-wise:
rng = np.random.default_rng()
@@ -59,7 +60,22 @@ for i, sigma in enumerate(sd_inputs):
# Estimate noise SD:
sd = mix.std(axis=0)
# Average SD over trials:
mean_sd = sd.mean(axis=-1)
# Log single-run results:
if sd_inputs.size == 1:
storage = dict(
scales=scales,
n_trials=n_trials,
sd_factor=sigma,
trials=sd,
mean=mean_sd,
spread=sd.std(axis=-1),
)
break
# Update multi-run results if better than previous:
n_match = (np.abs(1 - mean_sd) <= tol_to_one).sum()
if n_match > current_match:
print(f'Found better SD: {sigma:.3f} with {n_match} matches (previous: {current_match})')
@@ -70,13 +86,10 @@ for i, sigma in enumerate(sd_inputs):
current_match = n_match
del mix
del signal
if save_path is not None:
np.savez(save_path + 'sd_conversion.npz', **storage)
plt.plot(scales, storage['mean'], 'k')
plt.show()
embed()
print('Done.')
embed()