Layers methods
Get layer information
To get layer’s tag or description:
omi.layers['foo_layer'].tag
omi.layers['foo_layer'].info
When adding new layer, omilayers assigns na as layer’s tag and description. To set this kind of information to a layer:
omi.layers['foo_layer'].set_tag("data") # tag can be an arbritary string.
omi.layers['foo_layer'].set_info("This is the updated description.")
Get layer columns
omi.layers['foo_layer'].columns
Load layer data
To load all columns of layer as pandas.DataFrame
omi.layers['foo_layer'].to_df()
# Add layer column as pandas.DataFrame index
omi.layers['foo_layer'].to_df(index='colA')
To load specific columns of layer as pandas.DataFrame
omi.layers['foo_layer']['colA']
omi.layers['foo_layer'][['colA', 'colB']]
omi.layers['foo_layer'][0] # index of column
omi.layers['foo_layer'][0:10] # slice of columns indices
Conditional layer data load
To load all or certain columns from layer where column colB has value foo it can be done with the following ways:
Using the
.locmethod:
omi.layers['foo_layer'].loc[["foo"], ['col1', 'col2'], 'colB']
Note
By default, .loc searches for values in the rowid. To specify the column where the values will be searched, pass the name of the column as a third argument.
Parse the first three rows for a set of columns
omi.layers['foo_layer'].loc[[0,1,2], ['col1', 'col2']]
Using the
.querymethod:
# Select all columns where colB has some value
omi.layers['foo_layer'].query("colB == 0")
omi.layers['foo_layer'].query("colB == 'someString'")
# Select columns colA and colC where colB has some value
omi.layers['foo_layer'].query("colB == 'someString'", cols=['colA', 'colC'])
For more complex queries use the “
.select” method:
# cols="*" selects all columns
omi.layers['foo_layer'].select(cols="*", where="colB", values=0)
omi.layers['foo_layer'].select(cols="*", where="colB", values="string")
omi.layers['foo_layer'].select(cols="*", where="colB", values=[1,2,3,4])
omi.layers['foo_layer'].select(cols="*", where="colB", values=np.arange(1,10))
# To exclude a column from selection
omi.layers['foo_layer'].select(cols="*", exclude="colC", where="colB", values=np.arange(1,10))
omi.layers['foo_layer'].select(cols="*", exclude=["colC", "colD"], where="colB", values=np.arange(1,10))
# To select specific columns
omi.layers['foo_layer'].select(cols="colC", where="colB", values=np.arange(1,10))
omi.layers['foo_layer'].select(cols=["colC", "colD"], where="colB", values=np.arange(1,10))
Add or update layer column data
The code below:
data = np.arange(1,10)
data = pd.Series(np.arange(1,10))
data = [1,2,3,4,5,6,7,8,10]
omi.layers['foo_layer']['colA'] = data
will add colA to layer foo_layer if colA does not exist. Otherwise, it will replace the data colA holds.
Rename layer column
To rename layer’s column name from colA to colB:
omi.layers['foo_layer'].rename(col="colA", new_name="colB")
Delete layer column or rows
To delete the entire column colA from layer:
omi.layers['foo_layer'].drop("colA")
To delete rows where colA has certain value(s):
omi.layers['foo_layer'].drop("colA", values=0)
omi.layers['foo_layer'].drop("colA", values="string")
omi.layers['foo_layer'].drop("colA", values=[1,2,3,4])
To delete rows based on their rowids:
omi.layers['foo_layer'].drop(values=0)
omi.layers['foo_layer'].drop(values=[0,1,2,3])
Note
When deleting rowids, the values should be integers.
Replace all layer data
To replace the data of a layer:
new_data = pd.DataFrame({"col1":[1,2,3,4], "col2":[10,20,30.40]})
omi.layers['foo_layer'].set_data(new_data)
Insert rows to layer
To insert new rows to an existing layer it can be done with two ways:
using a dictionary
data = {"col1":[1,2,3,4], "col2":[10,20,30,40]}
omi.layers['foo_layer'].insert(data)
Note
The names of the dictionary’s keys should match column names in the layer.
using a
pandas.DataFrame
data = pd.DataFrame({"col1":[1,2,3,4], "col2":[10,20,30.40]})
# Column order in data does not match order in layer.
omi.layers['foo_layer'].insert(data)
# Column order in data matches order in layer.
omi.layers['foo_layer'].insert(data, ordered=True)
Create json with layer columns
To create a python dictionary with keys the values of column colA and values the values of column colB of a layer:
omi.layers['foo_layer'].to_json(key_col="colA", value_col="colB")
Join layers
omilayers loads data as pandas.DataFrame objects. Thus, to join two layers that have the column id in common the pandas.concat method can be used.
dfJoined = pd.concat([
omi.layers['layer1'].to_df(index='id'),
omi.layers['layer2'].to_df(index='id')
], axis='columns')
or to filter layers before joining
dfJoined = pd.concat([
omi.layers['layer1'].query(f"id BETWEEN 10 AND 100").set_index("id"),
omi.layers['layer2'].query(f"id BETWEEN 10 AND 100").set_index("id")
], axis='columns')