Markov chain generator
Project description
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 MarkovBase, MarkovSqliteMixin
class Markov(MarkovSqliteMixin, MarkovBase):
pass
markov = Markov(db='markov.db')
with open('data.txt') as fp:
markov.data(fp.read())
with open('data2.txt') as fp:
for line in fp:
markov.data(line, True)
markov.data('', False)
words = markov.generate(16) # generator
print(*words)
words = markov.generate(16, start=['sentence', 'start'])
print(*words)
markov.save()
markov = Markov.load('markov.db')
Image
from PIL import Image
from markovchain import MarkovBase, MarkovJsonMixin
from markovchain.image import MarkovImageMixin
class Markov(MarkovImageMixin, MarkovJsonMixin, MarkovBase):
pass
markov = Markov()
markov.data(Image.open('data.png'))
width = 32
height = 16
img = markov.image(width, height) # PIL image
with open('generated.png', 'wb') as fp:
img.save(fp)
with open('markov.json', 'w') as fp:
markov.save(fp)
markov = Markov.load('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
State file |
File type |
Data mixin used |
---|---|---|
stdout |
JSON |
MarkovJsonMixin |
*.json |
JSON |
MarkovJsonMixin |
*.json.bz2 |
bzip2 compressed JSON |
MarkovJsonMixin |
Other |
SQLite 3 database |
MarkovSqliteMixin |
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 --sentences 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] [-s SETTINGS] [-ss STATE_SIZE] [-st START] [-w WORDS] [-ws WORD_SEPARATOR] [-S SENTENCES] [-o OUTPUT] state positional arguments: state state file 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 generator state size -st START, --start START sentence start -w WORDS, --words WORDS max sentence size (default: 256) -ws WORD_SEPARATOR, --word-separator WORD_SEPARATOR output word separator (default: ' ') -S SENTENCES, --sentences SENTENCES number of generated sentences (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] {convert,create,update,settings,generate,filter} ... positional arguments: {convert,create,update,settings,generate,filter} optional arguments: -h, --help show this help message and exit
convert
> markovchain image convert -h usage: markovchain image convert [-h] [-p HUES SATURATIONS VALUES] [-c {0,1}] [-d] [-r WIDTH HEIGHT] input [input ...] positional arguments: input input file optional arguments: -h, --help show this help message and exit -p HUES SATURATIONS VALUES, --palette HUES SATURATIONS VALUES palette color division (default: [8, 4, 8]) -c {0,1}, --convert-type {0,1} conversion type (default: 1) -d, --dither enable dithering -r WIDTH HEIGHT, --resize WIDTH HEIGHT resize images (default: None)
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
Project details
Release history Release notifications | RSS feed
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.1.2.tar.gz
(43.6 kB
view hashes)
Built Distribution
Close
Hashes for markovchain-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66ef0d70822e319118198f9f542f82a7b09b0e34fc3734f9adae714bb62a41e5 |
|
MD5 | 55f7355f244fab6c786a566f552753d2 |
|
BLAKE2b-256 | 1240e83f342024d868425a6067bd42a178f0a275797ebe5d125e41832c1ee52e |