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
Default validation
Data columns added to a template without explicit validation automatically receive number as the default datatype. No additional update step is required for basic numeric columns.
Create a data column and add it — defaults to NUMBER datatype
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"
# 1) Create data column
created_column = client.data_columns.create(
data_column=DataColumn(name="Viscosity Number"),
)
# 2) Add data column to template — validation defaults to NUMBER
dt = client.data_templates.add_data_columns(
data_template_id=data_template_id,
data_columns=[DataColumnValue(data_column_id=created_column.id)],
)
print(dt.id)
Add numeric data column with range validation
Create a data column with a specific numeric range constraint
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, Operator, 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 with a range constraint (must be between 0 and 100)
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, operator=Operator.BETWEEN, min="0", max="100")]
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 validation on one
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 — viscosity defaults to NUMBER validation
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 appearance column with dropdown (enum) validation
appearance = next(x for x in (dt.data_column_values or []) if x.data_column_id == appearance_column.id)
appearance.validation = [
ValueValidation(
datatype=DataType.ENUM,
value=[
EnumValidationValue(text="Clear"),
EnumValidationValue(text="Cloudy"),
EnumValidationValue(text="Opaque"),
],
)
]
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)