Tiled Cheat Sheet#

The audience for this cheat sheet is a scientist reading and writing data in Tiled from within a Python program. Not included: Running a Tiled server, or using Tiled’s HTTP REST and WebSocket APIs from other programming languages.

See 10 minutes to Tiled for an expanded version.

Install Python Tiled client

With pip or uv, install "tiled[client]". With conda or pixi, install tiled-client available on the conda-forge channel.

Connect

# Explicit URL
from tiled.client import from_uri
c = from_uri("https://tiled-demo.nsls2.bnl.gov")

# Alternatively, use a "profile" as shorthand.
from tiled.client import from_profile
c = from_profile("some_alias")

Navigate

x = c['examples/xraydb']
x.metadata

Search

from tiled.queries import Key

results = x.search(Key('element.category') == 'nonmetal')

Fetch items

results.keys().first()
results.keys()[0]  # equivalent

results.values().first()
results.values()[0]  # equivalent

# Loops progressively download results in paginated batches.
for key, value in results.items():
    print(f"~~ {key} ~~")
    print(value.metadata)

# See also last(), head(), tail().

Export

# Tiled infers desired format from '.csv' file extension
c['examples/xraydb/C/edges'].export('my_table.csv')

# List avaiable formats.
c['examples/images/binary_blobs'].formats
# Specify format explicitly as MIME type.
c['examples/images/binary_blobs'].export('my_image.png', format='image/png')

Slice remotely

# Download array slice into numpy object in memory.
arr = c['examples/images/binary_blobs'][:50,-50:]

# Download array slice to file on disk.
c['examples/images/binary_blobs'].export(
    'top_right_corner.png',
     slice=np.s_[:50,-50:],
)

# Download table columns into pandas DataFrame in memory.
c['examples/xraydb/C/edges'].read(['edge', 'energy_eV'])

# Download table columns into file on disk.
c['examples/xraydb/C/edges'].export('my_table.csv', columns=['edge', 'energy_eV'])

Locate data sources

from tiled.client.utils import get_asset_filepaths

# Just the file path(s)
get_asset_filepaths(c['examples/xraydb/C/edges'])

# More detailed information, including format, shape or column names
(as applicable), URIs, etc.
c['examples/xraydb/C/edges'].data_sources()

Upload data

This requires a server that you are authorized to write to.

c.write_array([1, 2, 3], metadata={'color': 'blue'})
c.write_table({'a': [1, 2], 'b': [3, 4]}, metadata={'color': 'blue'})
s = c.create_container('stuff')
s.write_array([1, 2, 3], key='nested stuff')

More features not shown:

  • Downloading raw files in parallel

  • Registering data (e.g. files) without uploading a copy

  • Streaming data live

  • Specialized array structures, including sparse arrays and Awkward Arrays

See 10 minutes to Tiled for an expanded version.