omero.columns module

Concrete implementations of the omero.grid.Column type hierarchy which know how to convert themselves to PyTables types.

class columns.AbstractArrayColumn[source]

Bases: AbstractColumn

Additional base logic for array columns

arrays()[source]

Arrays of size 1 have to be converted to scalars, otherwise the column-to-row conversion in HdfStorage.append() will fail. This is messy, but I can’t think of a better way.

dtypes()[source]

Overriding to correct for size.

settable(tbl)[source]

Called by tables.py when first initializing columns. Can be used to complete further initialization.

class columns.AbstractColumn[source]

Bases: object

Base logic for all columns

append(tbl)[source]

Called by tables.py to give columns. By default, does nothing.

arrays()[source]

Any method which does not use the “values” field will need to override this method.

dtypes()[source]

Override this method if descriptor() doesn’t return the correct data type/size at initialisation- this is mostly a problem for array types

fromrows(rows, field_only=False)[source]

Any method which does not use the “values” field will need to override this method.

getsize()[source]

Any method which does not use the “values” field will need to override this method.

read(tbl, start, stop)[source]
readCoordinates(tbl, rowNumbers)[source]
setsize(size)[source]

Any method which does not use the “values” field will need to override this method.

settable(tbl)[source]

Called by tables.py when first initializing columns. Can be used to complete further initialization.

class columns.BoolColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, BoolColumn

descriptor(pos)[source]
class columns.DatasetColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, DatasetColumn

descriptor(pos)[source]
class columns.DoubleArrayColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractArrayColumn, DoubleArrayColumn

descriptor(pos)[source]
class columns.DoubleColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, DoubleColumn

descriptor(pos)[source]
class columns.FileColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, FileColumn

descriptor(pos)[source]
class columns.FloatArrayColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractArrayColumn, FloatArrayColumn

descriptor(pos)[source]
class columns.ImageColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, ImageColumn

descriptor(pos)[source]
class columns.LongArrayColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractArrayColumn, LongArrayColumn

descriptor(pos)[source]
class columns.LongColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, LongColumn

descriptor(pos)[source]
class columns.MaskColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, MaskColumn

append(tbl)[source]

Called by tables.py to give columns. By default, does nothing.

arrays()[source]

Any method which does not use the “values” field will need to override this method.

descriptor(pos)[source]
fromrows(rows, field_only=False)[source]

Any method which does not use the “values” field will need to override this method.

getbytes(masks, rowNumbers)[source]
getsize()[source]

Any method which does not use the “values” field will need to override this method.

read(tbl, start, stop)[source]
readCoordinates(tbl, rowNumbers)[source]
setsize(size)[source]

Any method which does not use the “values” field will need to override this method.

class columns.ObjectFactory(*args: Any, **kwargs: Any)[source]

Bases: ObjectFactory

create(string)[source]
destroy()[source]
register(ic)[source]
class columns.PlateColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, PlateColumn

descriptor(pos)[source]
class columns.RoiColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, RoiColumn

descriptor(pos)[source]
class columns.StringColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, StringColumn

StringColumns are actually numpy dtype ‘S’: “zero-terminated bytes (not recommended)” https://github.com/ome/omero-py/blob/v5.6.dev8/src/omero/columns.py#L269 https://docs.scipy.org/doc/numpy-1.15.1/reference/arrays.dtypes.html#specifying-and-constructing-data-types In any case HDF5 doesn’t seem to properly support unicode, and numexpr doesn’t even pretend to support it: - https://github.com/PyTables/PyTables/issues/499 - https://github.com/pydata/numexpr/issues/142 - https://github.com/pydata/numexpr/issues/150 - https://github.com/pydata/numexpr/issues/263 - https://github.com/pydata/numexpr/blob/v2.7.0/numexpr/necompiler.py#L340-L341

> import numexpr > a = “£” > numexpr.evaluate(‘a==”£”’) ValueError: unknown type str32 > b = “£”.encode() > numexpr.evaluate(‘b==”£”’) UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘£’ in position 0: ordinal not in range(128)

You should be able to store/load unicode data but you can’t use unicode in a where condition

arrays()[source]

Check for strings longer than the initialised column width This will always return bytes

descriptor(pos)[source]
dtypes()[source]

Overriding to correct for size. (Testing suggests this may not be necessary, the size appears to be correctly set at initialisation)

fromrows(rows, field_only=False)[source]

Any method which does not use the “values” field will need to override this method.

settable(tbl)[source]

Called by tables.py when first initializing columns. Can be used to complete further initialization.

class columns.WellColumnI(*args: Any, **kwargs: Any)[source]

Bases: AbstractColumn, WellColumn

descriptor(pos)[source]
columns.columns2definition(cols)[source]

Takes a list of columns and converts them into a map from names to tables.* column descriptors