Environment to python dictionary parser util
Project description
ordered_rectangles
This package is an utility purposed to:
- view float rectangles relations (relative positions and the order) in the text format
- change rectangles order by changing rectangles labels in the text format view file
Usual imports:
from ordered_rectangles import OrderedRectangles, RectTextViewer, read_text, read_json, write_text, write_json
Usage example:
class OrderedRectangles:
"""
stores `(x1, y1, x2, y2)` numpy-ordered rectangles and provides an ability to
1. show its text map which reflects the rectangles order and positions with different disretization level
2. save/load the rectangles with/without the map to json file
3. change the map manually to change the rectangles order easily
# How to create an object:
>>> d = OrderedRectangles([(0.1, 0.2, 0.3, 0.4), (0.1, 0.6, 0.2, 1.1)])
# How to view the map with `units` discretization level:
>>> units = 15
>>> mp = d.get_order_map(units=units); print(mp) # doctest: +NORMALIZE_WHITESPACE
1#### 2#######
# # # #
# # ########
#####
# Use `show_order_map` method to simplify this step:
>>> d.show_order_map(units=units, show_order=False) # doctest: +NORMALIZE_WHITESPACE
##### ########
# # # #
# # ########
#####
# Let's try bigger example:
>>> d = OrderedRectangles(
... [
... (0.1, 0.2, 0.3, 0.4), (0.1, 0.6, 0.2, 1.1),
... (0.1, 1.2, 0.3, 1.4), (0.1, 1.5, 0.25, 2.3),
... (0.35, 0.2, 0.6, 0.5), (0.4, 0.6, 0.6, 1.4)
... ]
... )
# `units` <= 0 means to search the best value automatically
>>> d.show_order_map(units=0) # doctest: +NORMALIZE_WHITESPACE
1######## 2################### 3######## 4##############################
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # #################### # # # #
# # # # # #
# # # # ###############################
# # # #
######### #########
5############
# # 6##############################
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
############# ###############################
# I can swap 5th and 6th rectangles programmatically:
>>> d[5], d[6] = d[6], d[5]
>>> d.show_order_map(units=0) # doctest: +NORMALIZE_WHITESPACE
1######## 2################### 3######## 4##############################
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # #################### # # # #
# # # # # #
# # # # ###############################
# # # #
######### #########
6############
# # 5##############################
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
############# ###############################
# The key feature is that I can change this order by changing the string map:
>>> d3 = d[3]; d4 = d[4]
>>> s = d.get_order_map(units=0).translate({ord('4'): '3', ord('3'): '4'})
>>> d.load_order_map(s)
>>> assert d[3] == d4 and d[4] == d3
# However it's not efficiet to change the rectangles order by changing the string map programmatically.
# Instead, it is supposed that u will save the map to some text file, change numbers manually and load the map from
# the file. `load_order_map` methods supports file path as an input too.
# Finally there is a way to save and load the rectangles as JSON:
>>> tempdir = 'tmp'
>>> jsdir = os.path.join(tempdir, 'separate-jsons'); mkdir(jsdir)
>>> mapdir = os.path.join(tempdir, 'separate-maps'); mkdir(mapdir)
>>> js_file = os.path.join(jsdir, 'rects.json')
>>> map_file = os.path.join(mapdir, 'rects.txt')
>>> d.to_json(path=js_file, save_map=map_file, units=0)
>>> dct = read_json(js_file); print(str(dct).replace(os.sep, '/').replace('//', '/'))
{'rects': [[0.1, 0.2, 0.3, 0.4], [0.1, 0.6, 0.2, 1.1], [0.1, 1.5, 0.25, 2.3], [0.1, 1.2, 0.3, 1.4], [0.4, 0.6, 0.6, 1.4], [0.35, 0.2, 0.6, 0.5]], 'map': '../separate-maps/rects.txt'}
# As u can see, tha path to maps file is saved as absolute or relative to the json file.
# U can change the order in the map manually and reload rectangles
>>> write_text(map_file, read_text(map_file).translate({ord('1'): '2', ord('2'): '1'}))
>>> d2 = OrderedRectangles.from_json(js_file)
>>> assert d[1] == d2[2] and d[2] == d2[1]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ordered_rectangles-0.0.3.tar.gz
(10.9 kB
view details)
Built Distribution
File details
Details for the file ordered_rectangles-0.0.3.tar.gz
.
File metadata
- Download URL: ordered_rectangles-0.0.3.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f78a849686efdb9656071fe87a36cd541943c1325538545ba0d8da56c8d45739 |
|
MD5 | 5347a46bbf46604fb01451c28cc8f7f5 |
|
BLAKE2b-256 | b5888cf8d9c16635c6a65114f567162cf26588793bdcff5ef0cb06dcb7e0c7bb |
Provenance
File details
Details for the file ordered_rectangles-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: ordered_rectangles-0.0.3-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 305090e18cdedf8b0426143144c42b87ece85d33b69dacb52281e820c2d3d05e |
|
MD5 | 41cf176fe4c14a099fffe8b11fe7e86b |
|
BLAKE2b-256 | b10707163136d670002394692a107f07c8004238a814d265505aeece37a3c3a6 |