Skip to content

Commit 4b210e7

Browse files
committed
deploy: abe58de
0 parents  commit 4b210e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+4312
-0
lines changed

.buildinfo

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Sphinx build info version 1
2+
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
3+
config: 2ef0749627f52a0c739d5c00bc0946e8
4+
tags: 645f666f9bcd5a90fca523b33c5a78b7

.doctrees/environment.pickle

22.6 KB
Binary file not shown.

.doctrees/index.doctree

13.4 KB
Binary file not shown.

.nojekyll

Whitespace-only changes.

CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
www.vocalpy.org

_images/crowsetta-logomark.png

25.7 KB
Loading

_images/vak-logomark.png

76.1 KB
Loading

_images/vocalpy-logomark.png

29.3 KB
Loading

_sources/index.md.txt

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# The VocalPy Community
2+
3+
VocalPy is a software community for researchers studying
4+
acoustic communication in animals:
5+
from fly buzzes to human speech, and any other vocalizations you can think of,
6+
including bird songs, bat calls, dolphin whistles, and mouse squeaks.
7+
The software consists of a set of interoperable Python packages
8+
built around a core library, also named VocalPy.
9+
Our goal is to build a sustainable community
10+
of users, maintainers, and developers of the software,
11+
that will better help us all understand how and why
12+
animals communicate with sound.
13+
14+
:::{card} Join our forum!
15+
:text-align: center
16+
{material-regular}`forum;2em` {bdg-link-primary-line}`forum.vocalpy.org<https://forum.vocalpy.org>`
17+
:::
18+
19+
:::{card} Read our developer blog
20+
:text-align: center
21+
{material-regular}`rss_feed;2em` {bdg-link-primary-line}`blog.vocalpy.org<https://blog.vocalpy.org/>`
22+
:::
23+
24+
:::::{grid} 1 1 3 3
25+
26+
::::{grid-item}
27+
28+
:::{card} VocalPy
29+
:link: https://vocalpy.readthedocs.io/en/latest/
30+
:img-bottom: _static/vocalpy-logomark.png
31+
^^^
32+
33+
A core package for acoustic communication research
34+
35+
+++
36+
37+
:::
38+
39+
::::
40+
41+
::::{grid-item}
42+
43+
44+
:::{card} Crowsetta
45+
:link: https://crowsetta.readthedocs.io/en/latest/
46+
:img-bottom: _static/crowsetta-logomark.png
47+
^^^
48+
49+
A Python tool to work with any format for annotating animal vocalizations and bioacoustics data.
50+
51+
+++
52+
53+
:::
54+
55+
::::
56+
57+
::::{grid-item}
58+
59+
:::{card} vak
60+
:link: https://vak.readthedocs.io/en/latest/
61+
:img-bottom: _static/vak-logomark.png
62+
^^^
63+
64+
A neural network framework for researchers studying animal acoustic communication.
65+
66+
+++
67+
68+
:::
69+
70+
::::
71+
72+
:::::

_sphinx_design_static/design-tabs.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
// @ts-check
2+
3+
// Extra JS capability for selected tabs to be synced
4+
// The selection is stored in local storage so that it persists across page loads.
5+
6+
/**
7+
* @type {Record<string, HTMLElement[]>}
8+
*/
9+
let sd_id_to_elements = {};
10+
const storageKeyPrefix = "sphinx-design-tab-id-";
11+
12+
/**
13+
* Create a key for a tab element.
14+
* @param {HTMLElement} el - The tab element.
15+
* @returns {[string, string, string] | null} - The key.
16+
*
17+
*/
18+
function create_key(el) {
19+
let syncId = el.getAttribute("data-sync-id");
20+
let syncGroup = el.getAttribute("data-sync-group");
21+
if (!syncId || !syncGroup) return null;
22+
return [syncGroup, syncId, syncGroup + "--" + syncId];
23+
}
24+
25+
/**
26+
* Initialize the tab selection.
27+
*
28+
*/
29+
function ready() {
30+
// Find all tabs with sync data
31+
32+
/** @type {string[]} */
33+
let groups = [];
34+
35+
document.querySelectorAll(".sd-tab-label").forEach((label) => {
36+
if (label instanceof HTMLElement) {
37+
let data = create_key(label);
38+
if (data) {
39+
let [group, id, key] = data;
40+
41+
// add click event listener
42+
// @ts-ignore
43+
label.onclick = onSDLabelClick;
44+
45+
// store map of key to elements
46+
if (!sd_id_to_elements[key]) {
47+
sd_id_to_elements[key] = [];
48+
}
49+
sd_id_to_elements[key].push(label);
50+
51+
if (groups.indexOf(group) === -1) {
52+
groups.push(group);
53+
// Check if a specific tab has been selected via URL parameter
54+
const tabParam = new URLSearchParams(window.location.search).get(
55+
group
56+
);
57+
if (tabParam) {
58+
console.log(
59+
"sphinx-design: Selecting tab id for group '" +
60+
group +
61+
"' from URL parameter: " +
62+
tabParam
63+
);
64+
window.sessionStorage.setItem(storageKeyPrefix + group, tabParam);
65+
}
66+
}
67+
68+
// Check is a specific tab has been selected previously
69+
let previousId = window.sessionStorage.getItem(
70+
storageKeyPrefix + group
71+
);
72+
if (previousId === id) {
73+
// console.log(
74+
// "sphinx-design: Selecting tab from session storage: " + id
75+
// );
76+
// @ts-ignore
77+
label.previousElementSibling.checked = true;
78+
}
79+
}
80+
}
81+
});
82+
}
83+
84+
/**
85+
* Activate other tabs with the same sync id.
86+
*
87+
* @this {HTMLElement} - The element that was clicked.
88+
*/
89+
function onSDLabelClick() {
90+
let data = create_key(this);
91+
if (!data) return;
92+
let [group, id, key] = data;
93+
for (const label of sd_id_to_elements[key]) {
94+
if (label === this) continue;
95+
// @ts-ignore
96+
label.previousElementSibling.checked = true;
97+
}
98+
window.sessionStorage.setItem(storageKeyPrefix + group, id);
99+
}
100+
101+
document.addEventListener("DOMContentLoaded", ready, false);

_sphinx_design_static/sphinx-design.min.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)