.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/core/table_writer_reader.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_core_table_writer_reader.py: Writing Containers to a tabular format ====================================== The ``TableWriter``/``TableReader`` sub-classes allow you to write a ``ctapipe.core.Container`` class and its meta-data to an output table. They treat the ``Field``s in the ``Container`` as columns in the output, and automatically generate a schema. Here we will go through an example of writing out data and reading it back with *Pandas*, *PyTables*, and a ``ctapipe.io.TableReader``: In this example, we will use the ``HDF5TableWriter``, which writes to HDF5 datasets using *PyTables*. Currently this is the only implemented TableWriter. .. GENERATED FROM PYTHON SOURCE LINES 19-25 Caveats to think about: \* vector columns in Containers *can* be written, but some lilbraries like Pandas can not read those (so you must use pytables or astropy to read outputs that have vector columns) \* units are stored in the table metadata, but some libraries like Pandas ignore them and all other metadata .. GENERATED FROM PYTHON SOURCE LINES 28-31 Create some example Containers ------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 31-43 .. code-block:: Python :lineno-start: 32 import os import numpy as np import pandas as pd import tables from astropy import units as u from ctapipe.core import Container, Field from ctapipe.io import HDF5TableReader, HDF5TableWriter, read_table .. GENERATED FROM PYTHON SOURCE LINES 44-53 .. code-block:: Python :lineno-start: 44 class VariousTypesContainer(Container): a_int = Field(int, "some int value") a_float = Field(float, "some float value with a unit", unit=u.m) a_bool = Field(bool, "some bool value") a_np_int = Field(np.int64, "a numpy int") a_np_float = Field(np.float64, "a numpy float") a_np_bool = Field(np.bool_, "np.bool") .. GENERATED FROM PYTHON SOURCE LINES 54-57 let’s also make a dummy stream (generator) that will create a series of these containers .. GENERATED FROM PYTHON SOURCE LINES 57-72 .. code-block:: Python :lineno-start: 59 def create_stream(n_event): data = VariousTypesContainer() for i in range(n_event): data.a_int = int(i) data.a_float = float(i) * u.cm # note unit conversion will happen data.a_bool = (i % 2) == 0 data.a_np_int = np.int64(i) data.a_np_float = np.float64(i) data.a_np_bool = np.bool_((i % 2) == 0) yield data .. GENERATED FROM PYTHON SOURCE LINES 73-78 .. code-block:: Python :lineno-start: 73 for data in create_stream(2): for key, val in data.items(): print("{}: {}, type : {}".format(key, val, type(val))) .. rst-class:: sphx-glr-script-out .. code-block:: none a_int: 0, type : a_float: 0.0 cm, type : a_bool: True, type : a_np_int: 0, type : a_np_float: 0.0, type : a_np_bool: True, type : a_int: 1, type : a_float: 1.0 cm, type : a_bool: False, type : a_np_int: 1, type : a_np_float: 1.0, type : a_np_bool: False, type : .. GENERATED FROM PYTHON SOURCE LINES 79-82 Writing the Data (and good practices) ------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 85-88 Always use context managers with IO classes, as they will make sure the underlying resources are properly closed in case of errors: .. GENERATED FROM PYTHON SOURCE LINES 88-100 .. code-block:: Python :lineno-start: 89 try: with HDF5TableWriter("container.h5", group_name="data") as h5_table: for data in create_stream(10): h5_table.write("table", data) 0 / 0 except Exception as err: print("FAILED:", err) print("Done") h5_table.h5file.isopen .. rst-class:: sphx-glr-script-out .. code-block:: none FAILED: division by zero Done 0 .. GENERATED FROM PYTHON SOURCE LINES 101-103 .. code-block:: Python :lineno-start: 101 print(os.listdir()) .. rst-class:: sphx-glr-script-out .. code-block:: none ['provenance.py', 'command_line_tools.py', 'table_writer_reader.py', 'mytool.provenance.log', 'README.rst', 'config.json', 'InstrumentDescription.py', 'containers.py', 'container.h5'] .. GENERATED FROM PYTHON SOURCE LINES 104-107 Appending new Containers ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 110-114 To append some new containers we need to set the writing in append mode by using: ‘mode=a’. But let’s now first look at what happens if we don’t. .. GENERATED FROM PYTHON SOURCE LINES 114-124 .. code-block:: Python :lineno-start: 115 for i in range(2): with HDF5TableWriter( "container.h5", mode="w", group_name="data_{}".format(i) ) as h5_table: for data in create_stream(10): h5_table.write("table", data) print(h5_table.h5file) .. rst-class:: sphx-glr-script-out .. code-block:: none container.h5 (File) np.str_('') Last modif.: '2025-10-23T07:32:44+00:00' Object Tree: / (RootGroup) np.str_('') /data_0 (Group) np.str_('') /data_0/table (Table(np.int64(0),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') container.h5 (File) np.str_('') Last modif.: '2025-10-23T07:32:44+00:00' Object Tree: / (RootGroup) np.str_('') /data_1 (Group) np.str_('') /data_1/table (Table(np.int64(0),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') .. GENERATED FROM PYTHON SOURCE LINES 125-127 .. code-block:: Python :lineno-start: 125 os.remove("container.h5") .. GENERATED FROM PYTHON SOURCE LINES 128-132 Ok so the writer destroyed the content of the file each time it opens the file. Now let’s try to append some data group to it! (using mode=‘a’) .. GENERATED FROM PYTHON SOURCE LINES 132-143 .. code-block:: Python :lineno-start: 133 for i in range(2): with HDF5TableWriter( "container.h5", mode="a", group_name="data_{}".format(i) ) as h5_table: for data in create_stream(10): h5_table.write("table", data) print(h5_table.h5file) .. rst-class:: sphx-glr-script-out .. code-block:: none container.h5 (File) np.str_('') Last modif.: '2025-10-23T07:32:44+00:00' Object Tree: / (RootGroup) np.str_('') /data_0 (Group) np.str_('') /data_0/table (Table(np.int64(0),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') container.h5 (File) np.str_('') Last modif.: '2025-10-23T07:32:44+00:00' Object Tree: / (RootGroup) np.str_('') /data_0 (Group) np.str_('') /data_0/table (Table(np.int64(10),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') /data_1 (Group) np.str_('') /data_1/table (Table(np.int64(0),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') .. GENERATED FROM PYTHON SOURCE LINES 144-147 So we can append some data groups. As long as the data group_name does not already exists. Let’s try to overwrite the data group : data_1 .. GENERATED FROM PYTHON SOURCE LINES 147-156 .. code-block:: Python :lineno-start: 148 try: with HDF5TableWriter("container.h5", mode="a", group_name="data_1") as h5_table: for data in create_stream(10): h5_table.write("table", data) except Exception as err: print("Failed as expected:", err) .. GENERATED FROM PYTHON SOURCE LINES 157-159 Good ! I cannot overwrite my data. .. GENERATED FROM PYTHON SOURCE LINES 159-163 .. code-block:: Python :lineno-start: 160 print(bool(h5_table.h5file.isopen)) .. rst-class:: sphx-glr-script-out .. code-block:: none False .. GENERATED FROM PYTHON SOURCE LINES 164-167 Reading the Data ---------------- .. GENERATED FROM PYTHON SOURCE LINES 170-183 Reading the whole table at once: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For this, you have several choices. Since we used the HDF5TableWriter in this example, we have at least these options available: - Pandas - PyTables - Astropy Table For other TableWriter implementations, others may be possible (depending on format) .. GENERATED FROM PYTHON SOURCE LINES 186-192 Reading using ``ctapipe.io.read_table`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This is the preferred method, it returns an astropy ``Table`` and supports keeping track of units, metadata and transformations. .. GENERATED FROM PYTHON SOURCE LINES 192-197 .. code-block:: Python :lineno-start: 194 table = read_table("container.h5", "/data_0/table") table[:5] .. raw:: html
Table length=5
a_inta_floata_boola_np_inta_np_floata_np_bool
m
int64float64boolint64float64bool
00.0True00.0True
10.01False11.0False
20.02True22.0True
30.03False33.0False
40.04True44.0True


.. GENERATED FROM PYTHON SOURCE LINES 198-201 .. code-block:: Python :lineno-start: 198 table.meta .. rst-class:: sphx-glr-script-out .. code-block:: none {'CTAPIPE_VERSION': '0.27.1.dev15+g1af6977ab'} .. GENERATED FROM PYTHON SOURCE LINES 202-209 Reading with Pandas: ^^^^^^^^^^^^^^^^^^^^ Pandas is a convenient way to read the output. **HOWEVER BE WARNED** that so far Pandas does not support reading the table *meta-data* or *units* for columns, so that information is lost! .. GENERATED FROM PYTHON SOURCE LINES 209-215 .. code-block:: Python :lineno-start: 211 data = pd.read_hdf("container.h5", key="/data_0/table") data.head() .. raw:: html
a_int a_float a_bool a_np_int a_np_float a_np_bool
0 0 0.00 True 0 0.0 True
1 1 0.01 False 1 1.0 False
2 2 0.02 True 2 2.0 True
3 3 0.03 False 3 3.0 False
4 4 0.04 True 4 4.0 True


.. GENERATED FROM PYTHON SOURCE LINES 216-219 Reading with PyTables ^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 219-226 .. code-block:: Python :lineno-start: 221 h5 = tables.open_file("container.h5") table = h5.root["data_0"]["table"] table .. rst-class:: sphx-glr-script-out .. code-block:: none /data_0/table (Table(np.int64(10),)fletcher32, shuffle, blosc:zstd(5)) np.str_('Storage of VariousTypesContainer') description := { "a_int": Int64Col(shape=(), dflt=np.int64(0), pos=0), "a_float": Float64Col(shape=(), dflt=np.float64(0.0), pos=1), "a_bool": BoolCol(shape=(), dflt=np.False_, pos=2), "a_np_int": Int64Col(shape=(), dflt=np.int64(0), pos=3), "a_np_float": Float64Col(shape=(), dflt=np.float64(0.0), pos=4), "a_np_bool": BoolCol(shape=(), dflt=np.False_, pos=5)} byteorder := 'little' chunkshape := (np.int64(1927),) .. GENERATED FROM PYTHON SOURCE LINES 227-229 note that here we can still access the metadata .. GENERATED FROM PYTHON SOURCE LINES 229-233 .. code-block:: Python :lineno-start: 231 table.attrs .. rst-class:: sphx-glr-script-out .. code-block:: none /data_0/table._v_attrs (AttributeSet), 31 attributes: [CLASS := np.str_('TABLE'), CTAFIELD_0_DESC := np.str_('some int value'), CTAFIELD_0_NAME := np.str_('a_int'), CTAFIELD_1_DESC := np.str_('some float value with a unit'), CTAFIELD_1_NAME := np.str_('a_float'), CTAFIELD_1_TRANSFORM := np.str_('quantity'), CTAFIELD_1_UNIT := np.str_('m'), CTAFIELD_2_DESC := np.str_('some bool value'), CTAFIELD_2_NAME := np.str_('a_bool'), CTAFIELD_3_DESC := np.str_('a numpy int'), CTAFIELD_3_NAME := np.str_('a_np_int'), CTAFIELD_4_DESC := np.str_('a numpy float'), CTAFIELD_4_NAME := np.str_('a_np_float'), CTAFIELD_5_DESC := np.str_('np.bool'), CTAFIELD_5_NAME := np.str_('a_np_bool'), CTAPIPE_VERSION := np.str_('0.27.1.dev15+g1af6977ab'), FIELD_0_FILL := np.int64(0), FIELD_0_NAME := np.str_('a_int'), FIELD_1_FILL := np.float64(0.0), FIELD_1_NAME := np.str_('a_float'), FIELD_2_FILL := np.False_, FIELD_2_NAME := np.str_('a_bool'), FIELD_3_FILL := np.int64(0), FIELD_3_NAME := np.str_('a_np_int'), FIELD_4_FILL := np.float64(0.0), FIELD_4_NAME := np.str_('a_np_float'), FIELD_5_FILL := np.False_, FIELD_5_NAME := np.str_('a_np_bool'), NROWS := np.int64(10), TITLE := np.str_('Storage of VariousTypesContainer'), VERSION := np.str_('2.7')] .. GENERATED FROM PYTHON SOURCE LINES 234-236 close the file .. GENERATED FROM PYTHON SOURCE LINES 236-239 .. code-block:: Python :lineno-start: 236 h5.close() .. GENERATED FROM PYTHON SOURCE LINES 240-243 Reading one-row-at-a-time: ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 246-253 Rather than using the full-table methods, if you want to read it row-by-row (e.g. to maintain compatibility with an existing event loop), you can use a ``TableReader`` instance. The advantage here is that units and other metadata are retained and re-applied .. GENERATED FROM PYTHON SOURCE LINES 253-267 .. code-block:: Python :lineno-start: 255 def read(mode): print("reading mode {}".format(mode)) with HDF5TableReader("container.h5", mode=mode) as h5_table: for group_name in ["data_0/", "data_1/"]: group_name = "/{}table".format(group_name) print(group_name) for data in h5_table.read(group_name, VariousTypesContainer): print(data.as_dict()) .. GENERATED FROM PYTHON SOURCE LINES 268-270 .. code-block:: Python :lineno-start: 268 read("r") .. rst-class:: sphx-glr-script-out .. code-block:: none reading mode r /data_0/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} /data_1/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} .. GENERATED FROM PYTHON SOURCE LINES 271-273 .. code-block:: Python :lineno-start: 271 read("r+") .. rst-class:: sphx-glr-script-out .. code-block:: none reading mode r+ /data_0/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} /data_1/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} .. GENERATED FROM PYTHON SOURCE LINES 274-276 .. code-block:: Python :lineno-start: 274 read("a") .. rst-class:: sphx-glr-script-out .. code-block:: none reading mode a /data_0/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} /data_1/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} .. GENERATED FROM PYTHON SOURCE LINES 277-278 .. code-block:: Python :lineno-start: 277 read("w") .. rst-class:: sphx-glr-script-out .. code-block:: none reading mode w /data_0/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} /data_1/table {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} {'a_int': np.int64(0), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(0), 'a_np_float': np.float64(0.0), 'a_np_bool': np.True_} {'a_int': np.int64(1), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(1), 'a_np_float': np.float64(1.0), 'a_np_bool': np.False_} {'a_int': np.int64(2), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(2), 'a_np_float': np.float64(2.0), 'a_np_bool': np.True_} {'a_int': np.int64(3), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(3), 'a_np_float': np.float64(3.0), 'a_np_bool': np.False_} {'a_int': np.int64(4), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(4), 'a_np_float': np.float64(4.0), 'a_np_bool': np.True_} {'a_int': np.int64(5), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(5), 'a_np_float': np.float64(5.0), 'a_np_bool': np.False_} {'a_int': np.int64(6), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(6), 'a_np_float': np.float64(6.0), 'a_np_bool': np.True_} {'a_int': np.int64(7), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(7), 'a_np_float': np.float64(7.0), 'a_np_bool': np.False_} {'a_int': np.int64(8), 'a_float': , 'a_bool': np.True_, 'a_np_int': np.int64(8), 'a_np_float': np.float64(8.0), 'a_np_bool': np.True_} {'a_int': np.int64(9), 'a_float': , 'a_bool': np.False_, 'a_np_int': np.int64(9), 'a_np_float': np.float64(9.0), 'a_np_bool': np.False_} .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.068 seconds) .. _sphx_glr_download_auto_examples_core_table_writer_reader.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: table_writer_reader.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: table_writer_reader.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: table_writer_reader.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_