Skip to content

Data Templates

Data Templates in Albert Invent define how results are captured and structured. They are used to capture clean, structured data about your experiments, such as flexural testing results, tensile testing results, etc.

Add numeric data column

Create a data column, add it, then set NUMBER datatype

from albert import Albert
from albert.resources.data_columns import DataColumn
from albert.resources.data_templates import DataColumnValue
from albert.resources.parameter_groups import DataType, ValueValidation

client = Albert.from_client_credentials()

data_template_id = "DT123"

# 1) Create data column
created_column = client.data_columns.create(
    data_column=DataColumn(name="Viscosity Number"),
)

# 2) Add data column to template
dt = client.data_templates.add_data_columns(
    data_template_id=data_template_id,
    data_columns=[DataColumnValue(data_column_id=created_column.id)],
)

# 3) Update template and set NUMBER datatype
target = next(x for x in (dt.data_column_values or []) if x.data_column_id == created_column.id)
target.validation = [ValueValidation(datatype=DataType.NUMBER)]

updated_dt = client.data_templates.update(data_template=dt)
print(updated_dt.id)

Add dropdown data column with validation

Add two data columns, then set ENUM and NUMBER validations

from albert import Albert
from albert.resources.data_columns import DataColumn
from albert.resources.data_templates import DataColumnValue
from albert.resources.parameter_groups import (
    DataType,
    EnumValidationValue,
    ValueValidation,
)

client = Albert.from_client_credentials()

data_template_id = "DT123"

# 1) Create data columns
appearance_column = client.data_columns.create(
    data_column=DataColumn(name="Appearance"),
)
viscosity_column = client.data_columns.create(
    data_column=DataColumn(name="Viscosity Number"),
)

# 2) Add both columns to template
dt = client.data_templates.add_data_columns(
    data_template_id=data_template_id,
    data_columns=[
        DataColumnValue(
            data_column_id=appearance_column.id,
        ),
        DataColumnValue(
            data_column_id=viscosity_column.id,
        ),
    ],
)

# 3) Update template with dropdown (enum) + number validations
appearance = next(x for x in (dt.data_column_values or []) if x.data_column_id == appearance_column.id)
viscosity = next(x for x in (dt.data_column_values or []) if x.data_column_id == viscosity_column.id)

appearance.validation = [
    ValueValidation(
        datatype=DataType.ENUM,
        value=[
            EnumValidationValue(text="Clear"),
            EnumValidationValue(text="Cloudy"),
            EnumValidationValue(text="Opaque"),
        ],
    )
]
viscosity.validation = [ValueValidation(datatype=DataType.NUMBER)]

updated_dt = client.data_templates.update(data_template=dt)
print(updated_dt.id)

Add function data column

Set a data column's value to a formula that references other columns

from albert import Albert
from albert.resources.data_columns import DataColumn
from albert.resources.data_templates import DataColumnValue

client = Albert.from_client_credentials()

data_template_id = "DT123"
formula = "=COL4+COL7+COL9"

# 1) Create data column
created_column = client.data_columns.create(
    data_column=DataColumn(name="Derived Result"),
)

# 2) Add to data template
dt = client.data_templates.add_data_columns(
    data_template_id=data_template_id,
    data_columns=[DataColumnValue(data_column_id=created_column.id)],
)

# 3) Set value + calculation
target = next(x for x in (dt.data_column_values or []) if x.data_column_id == created_column.id)
target.value = "100"
target.calculation = formula

updated_dt = client.data_templates.update(data_template=dt)
print(updated_dt.id)