Laboratory work from the university course.
To run these applications you need to have Python3.10.
- Clone repo:
git clone https://github.com/maksymshylo/statistical-methods.git
- Create virtual environment.
python3.10 -m venv .venv
- Activate it
source .venv/bin/activate
- Install requirements:
pip install -r requirements.txt
The program converts a string to noised image and then decodes it.
$ python3 lab1/decode_string.py --help
usage: decode_string.py [-h] --input_string INPUT_STRING --noise_level NOISE_LEVEL [--seed SEED]
options:
-h, --help show this help message and exit
--input_string INPUT_STRING
input string
--noise_level NOISE_LEVEL
noise level of bernoulli distribution
--seed SEED seed to debug
python3 lab1/generate_string.py --input_string "billy herrington" --noise_level 0.35 --seed 45
Decoded string: "billy herrington"
Original image | Noised image | Decoded image |
---|---|---|
python3 lab1/generate_string.py --input_string "van darkholme" --noise_level 0.45 --seed 45
Decoded string: "nde deauff sc"
Original image | Noised image | Decoded image |
---|---|---|
The program creates an image with black vertical and horizontal lines, apply bernoulli noise, and denoise it.
$ python3 lab2/gibbs_sampler.py --help
usage: gibbs_sampler.py [-h] [--h H] [--w W] [--n_lines N_LINES]
[--noise_level NOISE_LEVEL]
[--column_prob COLUMN_PROB] [--n_iter N_ITER]
options:
-h, --help show this help message and exit
--h H Height of image.
--w W Width of image.
--n_lines N_LINES Number of horizontal and vertical lines.
--noise_level NOISE_LEVEL
Noise level of bernoulli distribution.
--column_prob COLUMN_PROB
Probability of column to be black.
--n_iter N_ITER Number of iterations for Gibbs Sampler.
$ python3 lab2/gibbs_sampler.py --h 250 --w 250 --n_lines 40 --noise_level 0.42 --column_prob 0.5 --n_iter 100
column accuracy 99.6
row accuracy 99.6
Original image | Noised image | Decoded image |
---|---|---|
$ python3 lab2/precise_solution.py --help
usage: precise_solution.py [-h] --h H --w W --n_lines N_LINES --noise_level NOISE_LEVEL --column_prob COLUMN_PROB
options:
-h, --help show this help message and exit
--h H Height of image.
--w W Width of image.
--n_lines N_LINES Number of horizontal and vertical lines.
--noise_level NOISE_LEVEL
Noise level of bernoulli distribution.
--column_prob COLUMN_PROB
Probability of column to be black.
$ python3 lab2/precise_solution.py --h 250 --w 250 --n_lines 40 --noise_level 0.42 --column_prob 0.5
column accuracy 96.8
row accuracy 99.2
Original image | Noised image | Decoded image |
---|---|---|
Note: Lengths of string should be the same.
$ python3 lab3/row_over_row.py --help
usage: row_over_row.py [-h] --string_1 STRING_1 --string_2 STRING_2 --noise_level NOISE_LEVEL --n_iter N_ITER [--seed SEED]
options:
-h, --help show this help message and exit
--string_1 STRING_1 The first string to decode.
--string_2 STRING_2 The second string to decode.
--noise_level NOISE_LEVEL
Noise level of bernoulli distribution.
--n_iter N_ITER Number of Gibbs Sampler iterations.
--seed SEED Seed to debug
python3 lab3/row_over_row.py --string_1 'deliver' --string_2 'reviled' --noise_level 0.3 --n_iter 10 --seed 67
Decoding strings...
Iteration 0. String 1: deliver; String 2: reviled.
Iteration 1. String 1: deliver; String 2: reviled.
Iteration 2. String 1: deliver; String 2: reviled.
Iteration 3. String 1: deliver; String 2: reviled.
Iteration 4. String 1: deliver; String 2: reviled.
Iteration 5. String 1: deliver; String 2: reviled.
Iteration 6. String 1: deliver; String 2: reviled.
Iteration 7. String 1: deliver; String 2: reviled.
Iteration 8. String 1: deliver; String 2: reviled.
Iteration 9. String 1: deliver; String 2: reviled.
Input string 1: deliver
Input string 2: reviled
The first decoded string: deliver
The second decoded string: reviled
Input string over string image | Noised string over string image | Decoded string 1 | Decoded string 2 |
---|---|---|---|
$ python3 lab3/row_over_row.py --string_1 'hello' --string_2 'world' --noise_level 0.35 --n_iter 25 --seed 67
Iteration 0. String 1: h|e|||||||||rdo||||; String 2: wo||||||||h||ld.
Iteration 1. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 2. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 3. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||||||||||||||||ld.
Iteration 4. String 1: h|||z|||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 5. String 1: he||||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 6. String 1: he||||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 7. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 8. String 1: he||||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 9. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 10. String 1: he||||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 11. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 12. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 13. String 1: he||||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 14. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||h||ld.
Iteration 15. String 1: h|e|||||||||r||||||||||||o||||; String 2: wo||||||||||||||||||||||ld.
Iteration 16. String 1: h||e||||||||r||||||||||||o||||; String 2: world.
Iteration 17. String 1: hello||||; String 2: world.
Iteration 18. String 1: hello||||; String 2: world.
Iteration 19. String 1: hello||||; String 2: world.
Iteration 20. String 1: hello||||; String 2: world.
Iteration 21. String 1: hello||||; String 2: world.
Iteration 22. String 1: hello||||; String 2: world.
Iteration 23. String 1: hello||||; String 2: world.
Iteration 24. String 1: hello||||; String 2: world.
Input string 1: hello
Input string 2: world
The first decoded string: hello||||
The second decoded string: world
Input string over string image | Noised string over string image | Decoded string 1 | Decoded string 2 |
---|---|---|---|
deliver <=> reviled
animal <=> lamina
depots <=> stoped
diaper <=> repaid
drawer <=> reward
looter <=> retool
murder <=> redrum
redips <=> spider
debut <=> tubed
deeps <=> speed
peels <=> sleep
serif <=> fires
steel <=> leets