Overview
Markov chain generator
Requirements
Installation
pip install markovchain
pip install markovchain[image]
git clone https://github.com/dead-beef/markovchain
cd markovchain
pip install -e .[dev]
Building
./build.sh
Testing
./test
Module usage
Examples
Text
from markovchain import JsonStorage
from markovchain.text import MarkovText, ReplyMode
markov = MarkovText()
with open('data.txt') as fp:
markov.data(fp.read())
with open('data2.txt') as fp:
for line in fp:
markov.data(line, part=True)
markov.data('', part=False)
print(markov())
print(markov(max_length=16, reply_to='sentence start', reply_mode=ReplyMode.END))
markov.save('markov.json')
markov = MarkovText.from_file('markov.json')
Image
from PIL import Image
from markovchain import JsonStorage
from markovchain.image import MarkovImage
markov = MarkovImage()
markov.data(Image.open('input.png'))
width = 32
height = 16
img = markov(width, height)
with open('output.png', 'wb') as fp:
img.save(fp)
markov.save('markov.json')
markov = MarkovImage.from_file('markov.json')
CLI usage
> markovchain -h
usage: markovchain [-h] [-v] {text,image} ...
positional arguments:
{text,image}
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
Data types
File name |
File type |
Storage class |
|---|---|---|
None (stdout) |
JSON |
JsonStorage |
*.json |
JSON |
JsonStorage |
*.json.bz2 |
bzip2 compressed JSON |
JsonStorage |
Other |
SQLite 3 database |
SqliteStorage |
Examples
Text
markovchain text create --output text.db input1.txt input2.txt
markovchain text update text.db input3.txt input4.txt
markovchain text generate text.db
markovchain text generate --count 16 --start 'sentence start' text.db
Image
markovchain image create --progress --output img.db img1.png img2.png
markovchain image update --progress img.db img3.png img4.png
markovchain image generate --progress --size 64 64 --count 4 img.db img%02d.png
markovchain image filter --progress img.png output.png
Settings
Text
> markovchain text -h
usage: markovchain text [-h] {create,update,settings,generate} ...
positional arguments:
{create,update,settings,generate}
optional arguments:
-h, --help show this help message and exit
create
> markovchain text create -h
usage: markovchain text create [-h] [-P] [-s SETTINGS] [-o OUTPUT]
[input [input ...]]
positional arguments:
input input file (default: stdin)
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-s SETTINGS, --settings SETTINGS
settings json file
-o OUTPUT, --output OUTPUT
output file (default: stdout)
update
> markovchain text update -h
usage: markovchain text update [-h] [-P] [-s SETTINGS] [-o OUTPUT]
state [input [input ...]]
positional arguments:
state state file
input input file (default: stdin)
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-s SETTINGS, --settings SETTINGS
settings json file
-o OUTPUT, --output OUTPUT
output file (default: rewrite state file)
generate
> markovchain text generate -h
usage: markovchain text generate [-h] [-P] [-nf]
[-s SETTINGS] [-ss STATE_SIZE]
[-S START] [-E END] [-R REPLY]
[-w WORDS] [-c COUNT] [-o OUTPUT]
state
positional arguments:
state state file
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-nf, --no-format do not format text
-s SETTINGS, --settings SETTINGS
settings json file
-ss STATE_SIZE, --state-size STATE_SIZE
generator state size
-S START, --start START
text start
-E END, --end END text end
-R REPLY, --reply REPLY
reply to text
-w WORDS, --words WORDS
max text size (default: 256)
-c COUNT, --count COUNT
number of generated texts (default: 1)
-o OUTPUT, --output OUTPUT
output file (default: stdout)
settings
> markovchain text settings -h usage: markovchain text settings [-h] state positional arguments: state state file optional arguments: -h, --help show this help message and exit
Image
> markovchain image -h
usage: markovchain image [-h]
{create,update,settings,generate,filter} ...
positional arguments:
{create,update,settings,generate,filter}
optional arguments:
-h, --help show this help message and exit
create
> markovchain image create -h
usage: markovchain image create [-h] [-P] [-s SETTINGS] [-o OUTPUT]
[input [input ...]]
positional arguments:
input input file
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-s SETTINGS, --settings SETTINGS
settings json file
-o OUTPUT, --output OUTPUT
output file (default: stdout)
update
> markovchain image update -h
usage: markovchain image update [-h] [-P] [-s SETTINGS] [-o OUTPUT]
state [input [input ...]]
positional arguments:
state state file
input input file
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-s SETTINGS, --settings SETTINGS
settings json file
-o OUTPUT, --output OUTPUT
output file (default: rewrite state file)
generate
> markovchain image generate -h
usage: markovchain image generate [-h] [-P] [-s SETTINGS]
[-ss STATE_SIZE [STATE_SIZE ...]]
[-S WIDTH HEIGHT] [-l LEVEL] [-c COUNT]
state output
positional arguments:
state state file
output output file name format string
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-s SETTINGS, --settings SETTINGS
settings json file
-ss STATE_SIZE [STATE_SIZE ...], --state-size STATE_SIZE [STATE_SIZE ...]
generator state sizes
-S WIDTH HEIGHT, --size WIDTH HEIGHT
image size (default: <scanner.resize>)
-l LEVEL, --level LEVEL
image levels (default: <scanner.levels>)
-c COUNT, --count COUNT
generated image count (default: 1)
filter
> markovchain image filter -h
usage: markovchain image filter [-h] [-P] [-t {json,sqlite}] [-s SETTINGS]
[-S STATE] [-ss STATE_SIZE [STATE_SIZE ...]]
[-l LEVEL] [-c COUNT]
input output
positional arguments:
input input image
output output file name format string
optional arguments:
-h, --help show this help message and exit
-P, --progress show progress bar
-t {json,sqlite}, --type {json,sqlite}
generator type (default: json)
-s SETTINGS, --settings SETTINGS
settings json file
-S STATE, --state STATE
state file
-ss STATE_SIZE [STATE_SIZE ...], --state-size STATE_SIZE [STATE_SIZE ...]
generator state sizes
-l LEVEL, --level LEVEL
filter start level (default: 1)
-c COUNT, --count COUNT
generated image count (default: 1)
settings
> markovchain image settings -h usage: markovchain image settings [-h] state positional arguments: state state file optional arguments: -h, --help show this help message and exit
Licenses
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
markovchain-0.2.6.tar.gz
(59.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file markovchain-0.2.6.tar.gz.
File metadata
- Download URL: markovchain-0.2.6.tar.gz
- Upload date:
- Size: 59.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.6.0 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3272ce4202d9a0332ebefa80042a8788eca7640f944f0a54d07acec80f5dac8d
|
|
| MD5 |
ff9e3acd5b7367edc25c05e9bc01efc5
|
|
| BLAKE2b-256 |
4758f7d0c093b71099581bf8db49ed891a3574e43e7790b94bbd895c3ba71739
|
File details
Details for the file markovchain-0.2.6-py3-none-any.whl.
File metadata
- Download URL: markovchain-0.2.6-py3-none-any.whl
- Upload date:
- Size: 44.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.6.0 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd930b5766b8373207e7df58c88d679fbad95ef1209e4e2fb665851ac823d694
|
|
| MD5 |
87af2e590a7ea3d3bd36c44a7ef81c5f
|
|
| BLAKE2b-256 |
2048e214a70c549e047bc3515f93e50b31623c394efbd1959ee9132f6a95868f
|