diff --git a/README.md b/README.md
index 72989798..22f92dad 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,21 @@
-# crowsetta
+
+
+
+
+## a tool to work with any format for annotating vocalizations
+
[![Build Status](https://github.com/NickleDave/crowsetta/actions/workflows/ci.yml/badge.svg)](https://github.com/NickleDave/crowsetta/actions)
[![Documentation Status](https://readthedocs.org/projects/crowsetta/badge/?version=latest)](https://crowsetta.readthedocs.io/en/latest/?badge=latest)
[![DOI](https://zenodo.org/badge/159904494.svg)](https://zenodo.org/badge/latestdoi/159904494)
[![PyPI version](https://badge.fury.io/py/crowsetta.svg)](https://badge.fury.io/py/crowsetta)
[![codecov](https://codecov.io/gh/NickleDave/crowsetta/branch/main/graph/badge.svg?token=TXtNTxXKmb)](https://codecov.io/gh/NickleDave/crowsetta)
-`crowsetta` is a tool to work with any format for annotating vocalizations: speech, birdsong,
+`crowsetta` is a tool to work with any format for annotating vocalizations: speech, birdsong,
mouse ultrasonic calls (insert your favorite animal vocalization here).
-**The goal of** `crowsetta` **is to make sure that your ability to work with a dataset
-of vocalizations does not depend on your ability to work with any given format for
-annotating that dataset.** What `crowsetta` gives you is **not** yet another format for
-annotation (I promise!); instead you get some nice data types that make it easy to
+**The goal of** `crowsetta` **is to make sure that your ability to work with a dataset
+of vocalizations does not depend on your ability to work with any given format for
+annotating that dataset.** What `crowsetta` gives you is **not** yet another format for
+annotation (I promise!); instead you get some nice data types that make it easy to
work with any format: namely, `Sequence`s made up of `Segment`s.
```Python
@@ -24,23 +29,23 @@ work with any format: namely, `Sequence`s made up of `Segment`s.
>>> list_of_segments = [a_segment] * 3
>>> seq = Sequence(segments=list_of_segments)
>>> print(seq)
- Sequence(segments=[Segment(label='a', onset_s=None, offset_s=None, onset_ind=16000,
- offset_ind=32000, file='bird21.wav'), Segment(label='a', onset_s=None, offset_s=None,
- onset_ind=16000, offset_ind=32000, file='bird21.wav'), Segment(label='a', onset_s=None,
+ Sequence(segments=[Segment(label='a', onset_s=None, offset_s=None, onset_ind=16000,
+ offset_ind=32000, file='bird21.wav'), Segment(label='a', onset_s=None, offset_s=None,
+ onset_ind=16000, offset_ind=32000, file='bird21.wav'), Segment(label='a', onset_s=None,
offset_s=None, onset_ind=16000, offset_ind=32000, file='bird21.wav')])
```
-You can load annotation from your format of choice into `Sequence`s of `Segment`s
-(most conveniently with the `Transcriber`, as explained below) and then use the
+You can load annotation from your format of choice into `Sequence`s of `Segment`s
+(most conveniently with the `Transcriber`, as explained below) and then use the
`Sequence`s however you need to in your program.
-For example, if you want to loop through the `Segment`s of each `Sequence`s to
+For example, if you want to loop through the `Segment`s of each `Sequence`s to
pull syllables out of a spectrogram, you can do something like this, very Pythonically:
```Python
>>> syllables_from_sequences = []
>>> for a_seq in seq:
- ... seq_dict = seq.to_dict() # convert to dict with
+ ... seq_dict = seq.to_dict() # convert to dict with
... spect = some_spectrogram_making_function(seq['file'])
... syllables = []
... for seg in seq.segments:
@@ -50,7 +55,7 @@ pull syllables out of a spectrogram, you can do something like this, very Python
```
As mentioned above, `crowsetta` provides you with a `Transcriber` that comes equipped
-with convenience functions to do the work of converting for you.
+with convenience functions to do the work of converting for you.
```Python
from crowsetta import Transcriber
@@ -74,9 +79,9 @@ You can even easily adapt the `Transcriber` to use your own in-house format, lik
- load comma-separated values files back into Python and convert to other formats
- easily use with your own annotation format
-You might find it useful in any situation where you want
-to share audio files of song and some associated annotations,
-but you don't want to require the user to install a large
+You might find it useful in any situation where you want
+to share audio files of song and some associated annotations,
+but you don't want to require the user to install a large
application in order to work with the annotation files.
## Getting Started
@@ -145,4 +150,4 @@ The project is licensed under the [BSD license](./LICENSE).
### Citation
If you use `crowsetta`, please cite the DOI:
-[![DOI](https://zenodo.org/badge/159904494.svg)](https://zenodo.org/badge/latestdoi/159904494)
\ No newline at end of file
+[![DOI](https://zenodo.org/badge/159904494.svg)](https://zenodo.org/badge/latestdoi/159904494)
diff --git a/doc/_static/crowsetta-logomark.png b/doc/_static/crowsetta-logomark.png
new file mode 100644
index 00000000..7871fd50
Binary files /dev/null and b/doc/_static/crowsetta-logomark.png differ
diff --git a/doc/_static/crowsetta-primary-logo.png b/doc/_static/crowsetta-primary-logo.png
new file mode 100644
index 00000000..6883314d
Binary files /dev/null and b/doc/_static/crowsetta-primary-logo.png differ
diff --git a/doc/_static/crowsetta-secondary-logo.png b/doc/_static/crowsetta-secondary-logo.png
new file mode 100644
index 00000000..a8b1260b
Binary files /dev/null and b/doc/_static/crowsetta-secondary-logo.png differ
diff --git a/doc/conf.py b/doc/conf.py
index 9ec52cfd..eff71c02 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -50,8 +50,9 @@
'sphinx.ext.mathjax',
'sphinx.ext.napoleon',
'sphinx.ext.ifconfig',
- 'sphinxext.opengraph',
'sphinx.ext.viewcode',
+ 'sphinx_design',
+ 'sphinxext.opengraph',
'sphinx_tabs.tabs',
]
@@ -82,6 +83,18 @@
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
+myst_enable_extensions = [
+ # "dollarmath",
+ # "amsmath",
+ # "deflist",
+ # "html_admonition",
+ # "html_image",
+ "colon_fence",
+ # "smartquotes",
+ # "replacements",
+ # "linkify",
+ # "substitution",
+]
# -- Options for HTML output -------------------------------------------------
@@ -90,11 +103,15 @@
#
html_theme = 'sphinx_book_theme'
+html_logo = "_static/crowsetta-primary-logo.png"
+
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
-# html_theme_options = {}
+html_theme_options = {
+ "logo_only": True,
+}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
diff --git a/doc/index.md b/doc/index.md
index b469b330..62552290 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -13,13 +13,34 @@ execution:
timeout: 120
---
-# crowsetta
+::::{grid}
+:reverse:
+:gutter: 2 1 1 1
+:margin: 4 4 1 1
-crowsetta is a Python tool to work with any format for annotating
-animal vocalizations and other bioacoustics data.
-Many of these formats are for files created
-by GUI-based apps that enable users to annotate audio and/or spectrograms.
-Annotations include the times when sound events start and stop,
+:::{grid-item}
+:columns: 8
+:class: sd-fs-3
+
+A Python tool to work with any format for annotating
+animal vocalizations and bioacoustics data.
+:::
+
+:::{grid-item}
+:columns: 4
+
+```{image} ./_static/crowsetta-secondary-logo.png
+:width: 150px
+```
+:::
+
+::::
+
+crowsetta provides a Pythonic way to work with annotation formats
+for animal vocalizations and bioacoustics data.
+These formats are used, for example, by
+applications that enable users to annotate audio and/or spectrograms.
+Such annotations typically include the times when sound events start and stop,
and labels that assign each sound to some set of classes
chosen by the annotator.
crowsetta has built-in support for many widely used {ref}`formats `
@@ -27,7 +48,7 @@ such as {ref}`Audacity label tracks `,
{ref}`Praat .TextGrid files `,
and {ref}`Raven .txt files `.
-```{figure} _static/example-textgrid-for-index.png
+:::{figure} _static/example-textgrid-for-index.png
---
width: 90%
figclass: margin-caption
@@ -42,9 +63,9 @@ Example song from
[Bengalese finch song dataset](https://osf.io/r6paq/),
Tachibana and Morita 2021, adapated under
CC-By-4.0 License.**
-```
+:::
-```{figure} _static/example-raven-for-index.png
+:::{figure} _static/example-raven-for-index.png
---
width: 90%
figclass: margin-caption
@@ -60,7 +81,7 @@ Example song from
["An annotated set of audio recordings of Eastern North American birds containing frequency, time, and species information"](https://esajournals.onlinelibrary.wiley.com/doi/full/10.1002/ecy.3329),
Chronister et al., 2021, adapated under
CC0 1.0 License.**
-```
+:::
Who would want to use crowsetta?
Anyone that works with animal vocalizations
diff --git a/pyproject.toml b/pyproject.toml
index 51e904c3..43aad09d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -41,17 +41,18 @@ test = [
"pytest-cov >=2.12.0"
]
doc = [
+ "jupyterlab >=3.0.3",
"jupytext >=1.13.8",
"librosa >=0.9.1",
"myst-nb >=0.15.0",
"pyprojroot >=0.2.0",
"seaborn >=0.11.2",
"Sphinx >=3.4.3",
- "jupyterlab >=3.0.3",
- "sphinxext-opengraph >=0.5.1",
- "sphinx-copybutton >=0.4.0",
"sphinx-autobuild >= 2021.3.14",
"sphinx-book-theme >=0.3.2",
+ "sphinx-copybutton >=0.4.0",
+ "sphinx-design >=0.2.0",
+ "sphinxext-opengraph >=0.5.1",
"sphinx-tabs >= 3.3.1",
]
dev = [