pygraph7

A simple format for storing different types of graphs in the ASCII-string


Keywords
graphs, storage, method
License
MIT
Install
pip install pygraph7==0.0.2a2

Documentation

PyGraph7

ОписаниС

НСбольшая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для хранСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Graph7.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Graph7 Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ для хранСния большого количСства Π³Ρ€Π°Ρ„ΠΎΠ² (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† смСТности) с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ объСмом Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±Ρ‹Π»Π° ориСнтация Π½Π° ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ извСстный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Graph6. Однако Ρƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Graph6 Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки:

  • ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π³Ρ€Π°Ρ„ΠΎΠ²: простыС Π³Ρ€Π°Ρ„Ρ‹ (для хранСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹);
  • хранится избыточная информация ΠΎ Π³Ρ€Π°Ρ„Π°Ρ…, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ порядок Π³Ρ€Π°Ρ„Π°;
  • нСльзя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π΅Π±Ρ€Π°Ρ… (вСс ΠΈ Ρ‚.ΠΏ.);
  • для кодирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠ½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ символы.

Π’ связи с пСрСчислСнными нСдостатками Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΠ» ΠΎΡ‚ этих нСдостатков.

Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Graph7, Π° Π² Π΅Π΅ основС Π»Π΅ΠΆΠΈΡ‚ рСализация Π½Π° Π‘ΠΈ, доступная ΠΏΠΎ адрСсу https://github.com/va-dudnikov/graph7.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

Установка

Установка Ρ‡Π΅Ρ€Π΅Π· pip.

pip install pygraph7

Установка Ρ‡Π΅Ρ€Π΅Π· github.

git clone https://github.com/va-dudnikov/pygraph7
cd pygraph7
git submodule init
git submodule update

python setup.py install

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

import graph7 as g7

mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

encoded = g7.encode(mat) # ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ int

print(encoded)
print(g7.decode(encoded) == mat)

encoded = g7.encode(mat, "float") # ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ C-float

print(encoded)
print(g7.decode(encoded, "float") == mat)

encoded = g7.encode(mat, "double") # ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ C-double

print(encoded)
print(g7.decode(encoded, "double") == mat)

# Π’Ρ‹Π²ΠΎΠ΄
# b'HAAQIDBAUGBwgJ'
# True
# b'HGAACAPwAAAEAAAEBAAACAQAAAoEAAAMBAAADgQAAAAEEAABBB'
# True
# b'HOAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAHEAAAAAAAAAgQAAAAAAAACJA'
# True

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ examples, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ достаточно для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.