This release is a pre-release and may not be stable for production use.
totolo
This repository contains a Python package, totolo, for working with data from the Theme Ontology theming repository.
Installation
Install from PyPi:
pip install totolo
Or clone this repository and copy the totolo directory wherever you need it. No dependencies are required.
Basic Usage
#: import package
>>> import totolo
#: get the latest main branch version of the ontology
>>> ontology = totolo.remote()
>>> print(ontology)
<2945 themes, 4475 stories>
#: write it or read it locally
>>> ontology.write("/home/mo/themes")
>>> ontology = totolo.files("/home/mo/themes")
>>> print(ontology)
<2945 themes, 4475 stories>
Explore the themes:
#: go over all the themes and find the ones you want
>>> for theme in ontology.themes():
... if "romantic love" in theme.name:
... print(theme)
b'personal freedom vs. romantic love'[3]
b'romantic love'[3]
#: check the definition of a theme
>>> love = ontology.theme["love"]
>>> love.print()
(...)
Explore the stories:
>>> for weight, theme in story.iter_themes():
... print(f"{weight:<15} {theme.name}")
Choice Themes betrayal
Choice Themes the lust for power
(...)
Convert it to a pandas dataframe:
>>> df = ontology.dataframe()
>>> df
story_id title date theme weight
0 theamericanshortstory01 The Music School 1974 human self-reflection Major Themes
1 theamericanshortstory01 The Music School 1974 murder Major Themes
... ... ... ... ... ...
52453 videogame: Final Fantasy VI (1994) Final Fantasy VI 1994-04-02 feral children in society Minor Themes
52454 videogame: Final Fantasy VI (1994) Final Fantasy VI 1994-04-02 father and son Minor Themes
[52455 rows x 5 columns]
Snippets
List official versioned releases of the ontology:
list(totolo.remote.versions())
Load the v2023.06 release:
ontology = totolo.remote.version('v2023.06')
Create an excel sheet with all the usages of the theme "loyalty" as well as any child theme of the same:
df = ontology.theme['loyalty'].descendants().dataframe(motivation=True, descriptions=True)
df.to_excel("/mnt/d/repos/themelist-loyalty.xlsx", "loyalty")
Find theme entries in stories according to some criteria. For example, find empty motivations:
empty_motivations = [
(story, weight, part)
for story in ontology.stories()
for weight, part in story.iter_theme_entries()
if part.motivation.strip() == ""
]
Getting Help
If you encounter a bug, please file a minimal reproducible example on GitHub issues. For feature requests and other matters, please post on the GitHub discussions board.
Code Test Coverage
License
All code in this repository is published with the MIT license.
Metadata
Release files for totolo 1.5.2.dev202404281659
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| totolo-1.5.2.dev202404281659.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| totolo-1.5.2.dev202404281659-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / totolo-1.5.2.dev202404281659.tar.gz
| Download URL | totolo-1.5.2.dev202404281659.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f2e0568fe619939bf1aeb8cca0fdc6a3fc8553f4d5a86d4aa218597b48753864
|
|
BLAKE2b-256 checksum How to use checksums |
b4da2c7e3199473a5f15234caf55453ebfdc4f4833b536897a49261efd9163fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|
Release files / totolo-1.5.2.dev202404281659-py2.py3-none-any.whl
| Download URL | totolo-1.5.2.dev202404281659-py2.py3-none-any.whl |
|---|---|
| Size | 23.6 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
f80b9b1df90965c6c0ea42a3b478f2d7a815e5dedc905f27dc41cb3202f5d17d
|
|
BLAKE2b-256 checksum How to use checksums |
219e249abab143bcb6665c66c1a8291032c8eb9cd4b88d5c73ac57fdcf61b4b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|