1.9 KiB
1.9 KiB
jupytext
jupytext | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
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
Command Line Usage
fdb list class=rd,expver=0001,... | qubed --from=fdblist --to=text
--from
options include: fdblist
, json
, protobuf
, marslist
, constraints
.
--to
options include text
, html
, json
, datacubes
constraints
.
use --input
and --output
to specify input and output files respectively.