Skip to main content

Sanskrit meter identification and analysis library

Project description

Chanda

PyPI version Python 3.8+ License: AGPL v3

Sanskrit Meter Identification and Analysis Library

A comprehensive Python library for identifying and analyzing Sanskrit poetic meters. Supports 200+ meters including Sama-vṛtta, Ardhasama-vṛtta, Viṣama-vṛtta, and Mātrā-vṛtta.


Features

  • 200+ Meter Database: Comprehensive coverage of Sanskrit meters

    • Sama-vṛtta (meters with identical padas)
    • Ardhasama-vṛtta & Viṣama-vṛtta (meters with varying padas)
    • Mātrā-vṛtta (matra-based meters like Āryā, Gīti)
  • Smart Identification:

    • Exact pattern matching
    • Fuzzy matching with syllable-level correction suggestions
    • Verse-level analysis (4-line grouping)
  • Multi-Script Support: 15+ scripts and transliteration schemes

    • Devanagari, IAST, ITRANS, Harvard-Kyoto, SLP1, WX, Velthuis, and more
  • Detailed Analysis:

    • Syllable segmentation
    • Laghu-Guru (light-heavy) marking
    • Gana notation conversion
    • Mātrā (morae) counting
    • Jāti (classification) identification

Installation

From PyPI

pip install chanda

From Source

git clone https://github.com/hrishikeshrt/chanda.git
cd chanda
pip install -e .

Quick Start

Python API

from chanda import identify_meter

# Simple example - Anuṣṭubh (most common meter)
text = "को न्वस्मिन् साम्प्रतं लोके गुणवान् कश्च वीर्यवान्"
result = identify_meter(text)
print(result['display_chanda'])  # Output: अनुष्टुभ् (पाद 1-2)

# Gana-based meter example - shows gana pattern
text = "नमस्ते सदा वत्सले मातृभूमे"
result = identify_meter(text)
print(result['display_chanda'])  # Output: भुजङ्गप्रयात
print(result['gana'])            # Output: यययय

Command-Line Interface

# Analyze a single line
chanda "को न्वस्मिन् साम्प्रतं लोके गुणवान् कश्च वीर्यवान्"

# Analyze a file
chanda -f bhagavad_gita.txt --verse --summary

# Interactive mode
chanda -i

# Get help
chanda --help

Detailed Usage

Single Line Analysis

from chanda import identify_meter

text = "रामो राजमणिः सदा विजयते रामं रमेशं भजे"
result = identify_meter(text, fuzzy=True)

if result['found']:
    print(f"Meter: {result['display_chanda']}")
    print(f"Syllables: {result['syllables']}")
    print(f"Pattern (LG): {' '.join(result['lg'])}")
    print(f"Gana: {result['gana']}")
    print(f"Syllable count: {result['length']}")
    print(f"Mātrā count: {result['matra']}")
else:
    # Check fuzzy matches
    if result['fuzzy']:
        best_match = result['fuzzy'][0]
        print(f"Closest meter: {best_match['display_chanda']}")
        print(f"Similarity: {best_match['similarity']:.2%}")

Verse Analysis

from chanda import analyze_text

verse = """को न्वस्मिन् साम्प्रतं लोके गुणवान् कश्च वीर्यवान्।
धर्मज्ञश्च कृतज्ञश्च सत्यवाक्यो दृढव्रतः॥"""

results = analyze_text(verse, verse_mode=True, fuzzy=True)

# Access verse-level results
for verse in results['result']['verse']:
    best_meters, score = verse['chanda']
    print(f"Verse meter: {' / '.join(best_meters)} (score: {score})")

Documentation

Full documentation is available at chanda.readthedocs.io


Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Run the test suite
  5. Submit a pull request

Citation

If you use Chandojñānam in your research, please cite:

@inproceedings{terdalkar2023chandojnanam,
    title = "Chandojnanam: A {S}anskrit Meter Identification and Utilization System",
    author = "Terdalkar, Hrishikesh  and
      Bhattacharya, Arnab",
    booktitle = "Proceedings of the Computational {S}anskrit {\&} Digital Humanities: Selected papers presented at the 18th World {S}anskrit Conference",
    month = jan,
    year = "2023",
    address = "Canberra, Australia (Online mode)",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2023.wsc-csdh.8",
    pages = "113--127",
}

License

GNU Affero General Public License v3.0 - see LICENSE file for details.


Acknowledgments

  • Based on traditional chandaśāstra texts
  • Meter definitions compiled from various classical sources
  • Built on the excellent sanskrit-text and indic-transliteration libraries

Links

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

chanda-0.1.1.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

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

chanda-0.1.1-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file chanda-0.1.1.tar.gz.

File metadata

  • Download URL: chanda-0.1.1.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for chanda-0.1.1.tar.gz
Algorithm Hash digest
SHA256 def5afd5d3d4f726606b7f87985a25a8fd0acdbbd6eb79a8531ece33c0a1045b
MD5 15e5649a60e92ab73c92f0c498ed5a67
BLAKE2b-256 5be6e2bc60373f4b0d99003e2e2714802944279b8dfba254ed95a3d4732c2dc7

See more details on using hashes here.

File details

Details for the file chanda-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: chanda-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for chanda-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2a023661f3f0e2e073605cca583bd904367bbd60b6a1582d14cd368fc4d76323
MD5 f7606a596381220e97b2d9a28f6e914f
BLAKE2b-256 8e4eb5d5c4632a21457992d5947767694c09597a076db1de9e6e025e98b1981d

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