qubed/docs/quickstart.md
2025-02-14 09:13:55 +00:00

1.6 KiB

jupytext
jupytext
text_representation
extension format_name format_version jupytext_version
.md myst 0.13 1.16.4

Quickstart

Installation

pip install qubed

Usage

Make an uncompressed qube:

from qubed import Qube

q = Qube.from_dict({
    "class=od" : {
        "expver=0001": {"param=1":{}, "param=2":{}},
        "expver=0002": {"param=1":{}, "param=2":{}},
    },
    "class=rd" : {
        "expver=0001": {"param=1":{}, "param=2":{}, "param=3":{}},
        "expver=0002": {"param=1":{}, "param=2":{}},
    },
})
print(f"{q.n_leaves = }, {q.n_nodes = }")
q

Compress it:

cq = q.compress()
assert cq.n_leaves == q.n_leaves
print(f"{cq.n_leaves = }, {cq.n_nodes = }")
cq

Load a larger example qube (requires source checkout):

from pathlib import Path
import json
data_path = Path("../tests/example_qubes/climate_dt.json")
with data_path.open("r") as f:
    climate_dt = Qube.from_json(json.loads(f.read()))

# Using the html or print methods is optional but lets you specify things like the depth of the tree to display.
print(f"{climate_dt.n_leaves = }, {climate_dt.n_nodes = }")
climate_dt.html(depth=1) # Limit how much is open initially, click leave to see more.

Set Operations

A = Qube.from_dict({
    "a=1/2/3" : {"b=1/2/3" : {"c=1/2/3" : {}}},
    "a=5" : {  "b=4" : {  "c=4" : {}}}
    })

B = Qube.from_dict({
    "a=1/2/3" : {"b=1/2/3" : {"c=1/2/3" : {}}},
    "a=5" : {  "b=4" : {  "c=4" : {}}}
    })

A.print(name="A"), B.print(name="B");

A | B