Skip to main content

Database-native infrastructure for reproducible discourse analysis workflows

Project description

DIAAD - Database-oriented, Integrative Architecture for Analyzing Discourse

PyPI version Python License Streamlit App

DIAAD is open-source Python infrastructure for reproducible discourse analysis workflows. It helps organize CHAT transcripts, transcript-derived tables, metadata, manual coding files, reliability checks, blinding, rate calculations, target vocabulary analysis, generated examples, and run artifacts across repeated analyses.

DIAAD is under active development. Output formats, command behavior, and documentation may continue to change before a stable 1.0 release.

Core Capabilities

  • Convert CHAT .cha files into sample- and utterance-level transcript tables.
  • Generate coding and reliability workbooks for Complete Utterances, word counts, POWERS, Digital Conversation Turns, and custom templates.
  • Select, evaluate, and reselect reliability samples.
  • Analyze completed coding files and calculate per-minute rates from speaking-time tables.
  • Analyze target vocabulary coverage using built-in or custom resources.
  • Encode and decode configured identifier columns for blinding workflows.
  • Generate runnable synthetic example projects and generated Example I/O documentation.
  • Record resolved configuration, logs, manifests, and other run artifacts for reproducibility.

Installation

DIAAD requires Python >=3.12,<3.13.

Recommended: conda

conda create -n diaad python=3.12
conda activate diaad
python -m pip install diaad

Alternative: venv

Create and activate a virtual environment:

python -m venv .venv

Windows:

.venv\Scripts\activate

macOS/Linux:

source .venv/bin/activate

Install DIAAD:

python -m pip install diaad

Optional dependency groups

python -m pip install "diaad[web]"      # local Streamlit web app
python -m pip install "diaad[nlp]"      # NLP-backed workflows (spaCy)
python -m pip install "diaad[web,nlp]"  # both

If you install the nlp extra and plan to use the default POWERS automation model, also install the required spaCy language model:

python -m spacy download en_core_web_sm

Development installation

git clone https://github.com/nmccloskey/DIAAD.git
cd DIAAD
python -m pip

Quick Start

Check the command-line interface:

diaad --help

Generate a full synthetic example dataset:

diaad examples

Generate examples for one command:

diaad examples --for-command "transcripts tabularize"

Run a basic transcript tabularization command:

diaad transcripts tabularize

Run multiple commands in sequence:

diaad "transcripts tabularize, cus files, words files"

Launch the local web app after installing diaad[web]:

diaad streamlit

The legacy streamlit_diaad launcher is also available.

Project Configuration

For real projects, use a project folder with split configuration files:

your_project/
  config/
    project.yaml
    advanced.yaml
  diaad_data/
    input/
    output/

When run from your_project/, the CLI uses ./config automatically. You can also pass a config source explicitly:

diaad transcripts tabularize --config config

Use a dry run to inspect the resolved configuration before processing data:

diaad transcripts tabularize --dry-run-config --dry-run-config-format yaml

See the manual for the current configuration model and settings.

Documentation

The authored manual is in docs/manual.

Useful entry points:

Generated Example I/O pages are built from packaged example specs and should be regenerated rather than edited by hand.

Development and Tests

Install development dependencies:

pip install -e ".[dev,web,nlp]"

Run the test suite:

pytest

Run a specific test file:

pytest tests/test_examples/test_examples.py

Data Privacy

DIAAD can support blinding and organized handling of discourse data, but it is not a de-identification guarantee. For identifiable, sensitive, or difficult-to-deidentify data, prefer local CLI processing and follow the privacy requirements of the project, institution, and data source.

Acknowledgments

DIAAD builds on the broader open-source language-analysis ecosystem and is designed to work downstream of CHAT/TalkBank-oriented workflows. Fuller methodological context and acknowledgments are maintained in the manual.

License

DIAAD is distributed under the MIT License. License metadata is declared in pyproject.toml.

Contact

Please use GitHub Issues for bug reports, feature requests, and documentation problems.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diaad-0.3.1.tar.gz (211.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

diaad-0.3.1-py3-none-any.whl (273.1 kB view details)

Uploaded Python 3

File details

Details for the file diaad-0.3.1.tar.gz.

File metadata

  • Download URL: diaad-0.3.1.tar.gz
  • Upload date:
  • Size: 211.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for diaad-0.3.1.tar.gz
Algorithm Hash digest
SHA256 dec0b37e6d1b4f9a38c913e3a627b89ac7baf773a19fc2264c9bf22a1f420408
MD5 97156ffcd817b34b0a440d2a90800ebc
BLAKE2b-256 81d6c75c97dfd1efd49a42d085a7fb66f6491b656e49f21abaac1addec9f4a2b

See more details on using hashes here.

File details

Details for the file diaad-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: diaad-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 273.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for diaad-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c12492cd4781d32404324288e97ac280cb41da086912a2e33200a020352d2067
MD5 6dcaa0aa3f2841abb35842deb171dd9f
BLAKE2b-256 0b3b2000b2d901da7bd9fcb8d24162e8e85fd2c1c8f494005154e48e21d6157e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page