markovchain
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