batdetect2/notebooks/targets.py
2025-08-04 02:49:30 +01:00

98 lines
2.0 KiB
Python

import marimo
__generated_with = "0.14.5"
app = marimo.App(width="medium")
@app.cell
def _():
import marimo as mo
return (mo,)
@app.cell
def _():
from batdetect2.data import load_dataset, load_dataset_config
return load_dataset, load_dataset_config
@app.cell
def _(mo):
dataset_input = mo.ui.file_browser(label="dataset config file")
dataset_input
return (dataset_input,)
@app.cell
def _(mo):
audio_dir_input = mo.ui.file_browser(
label="audio directory", selection_mode="directory"
)
audio_dir_input
return (audio_dir_input,)
@app.cell
def _(dataset_input, load_dataset_config):
dataset_config = load_dataset_config(
path=dataset_input.path(), field="datasets.train",
)
return (dataset_config,)
@app.cell
def _(audio_dir_input, dataset_config, load_dataset):
dataset = load_dataset(dataset_config, base_dir=audio_dir_input.path())
return (dataset,)
@app.cell
def _(dataset):
len(dataset)
return
@app.cell
def _(dataset):
tag_groups = [
se.tags
for clip in dataset
for se in clip.sound_events
if se.tags
]
all_tags = [
tag for group in tag_groups for tag in group
]
return (all_tags,)
@app.cell
def _(mo):
key_search = mo.ui.text(label="key", debounce=0.1)
value_search = mo.ui.text(label="value", debounce=0.1)
mo.hstack([key_search, value_search]).left()
return key_search, value_search
@app.cell
def _(all_tags, key_search, mo, value_search):
filtered_tags = list(set(all_tags))
if key_search.value:
filtered_tags = [tag for tag in filtered_tags if key_search.value.lower() in tag.key.lower()]
if value_search.value:
filtered_tags = [tag for tag in filtered_tags if value_search.value.lower() in tag.value.lower()]
mo.vstack([mo.md(f"key={tag.key} value={tag.value}") for tag in filtered_tags[:5]])
return
@app.cell
def _():
return
if __name__ == "__main__":
app.run()