Flow diagram

Flow diagram#

The scrollable diagram below outlines the sequence of functions in chatter, from data cleaning to visualization.

        ---
config:
    layout: elk
    look: neo
    theme: neutral
    themeVariables:
        fontSize: '24px'
---

flowchart TB
    classDef viridis1 fill:#440154,stroke:#333,stroke-width:1px,color:#fff
    classDef viridis2 fill:#3b528b,stroke:#333,stroke-width:1px,color:#fff
    classDef viridis3 fill:#21918c,stroke:#333,stroke-width:1px,color:#fff
    classDef viridis4 fill:#5ec962,stroke:#333,stroke-width:1px,color:#000
    classDef viridis5 fill:#fde725,stroke:#333,stroke-width:1px,color:#000

    subgraph subgraph1["Audio preprocessing"]
        direction TB
        C("Gain normalization with *librosa*")
        B("High/low-pass filtering with *pydub*")
        DD("Noise reduction with *biodenoising*")
        D("Noise reduction with *noisereduce*")
        E("Compression with *audiocomplib*")
        F("Peak limiting with *audiocomplib*")
    end

    subgraph subgraph2["Segmentation"]
        I("Amplitude-based segmentation with librosa")
        J("Image-based segmentation with *Pykanto*")
    end

    subgraph subgraph3["Spectrogram preprocessing"]
        M("Normalization")
        N("Centering/padding")
        O("Downsampling to 128x128")
    end

    subgraph subgraph4["Variational autoencoder in *pytorch*"]
        R("Latent space")
        Q("Encoder layers")
        S("Decoder layers")
    end

    subgraph subgraph5["Analysis"]
        V("Complexity using cosine distances within sequences")
        X("Dimensionality reduction with *pacmap*")
        Y("Birch clustering with *scikit*")
        Z("Predictability using vector autoregression in *numpy*")
        AA("Novelty using density estimation in *denmarf*")
    end

    A["Raw audio files"] --> B & H("Species identification with *birdnetlib*")
    H --> B
    B --> C
    C --> DD
    DD --> D
    D --> E
    E --> F
    F --> G["Processed audio files"]
    G --> I & J
    L["Annotations from external segmentation"] --> K["Raw spectrograms"]
    I --> K
    J --> K
    K --> M
    M --> N
    N --> O
    O --> P["Processed spectrograms"]
    P --> CC("Computer vision model in *transformers*")
    CC --> U
    P --> Q
    Q --> R
    R --> S & U["Embeddings"]
    S --> T["Simulated spectrograms"]
    U --> V & X & Y & Z & AA
    V --> BB["Output and visualization"]
    X --> BB
    Y --> BB
    Z --> BB
    AA --> BB

    class A,H,B,C,D,DD,E,F viridis1
    class G,I,J,L,K viridis2
    class M,N,O,P viridis3
    class Q,R,S,T,U,CC viridis4
    class V,X,Y,Z,AA,BB viridis5