lamindb.ULabel¶
- class lamindb.ULabel(name: str, description: str | None = None, reference: str | None = None, reference_type: str | None = None)¶
Bases:
Registry,HasParents,CanValidate,TracksRun,TracksUpdatesUniversal labels (valid categories).
- Parameters:
name –
strA name.description –
strA description.reference –
str | None = NoneFor instance, an external ID or a URL.reference_type –
str | None = NoneFor instance,"url".
A
ULabelrecord provides the easiest way to annotate an artifact or collection with a label:"My project","curated", or"Batch X":>>> my_project = ULabel(name="My project") >>> my_project.save() >>> collection.ulabels.add(my_project)
In some cases, a label is measured within an artifact or collection a feature (a
Featurerecord) denotes the column name in which the label is stored. For instance, the collection might contain measurements across 2 organism of the Iris flower:"setosa"&"versicolor".See Tutorial: Features & labels to learn more.
Note
If you work with complex entities like cell lines, cell types, tissues, etc., consider using the pre-defined biological registries in
biontyto label artifacts & collections.If you work with biological samples, likely, the only sustainable way of tracking metadata, is to create a custom schema module.
See also
Examples
Create a new label:
>>> my_project = ln.ULabel(name="My project") >>> my_project.save()
Label a artifact without associating it to a feature:
>>> ulabel = ln.ULabel.filter(name="My project").one() >>> artifact = ln.Artifact("./myfile.csv") >>> artifact.save() >>> artifact.ulabels.add(ulabel) >>> artifact.ulabels.list("name") ['My project']
Organize labels in a hierarchy:
>>> ulabels = ln.ULabel.lookup() # create a lookup >>> is_project = ln.ULabel(name="is_project") # create a super-category `is_project` >>> is_project.save() >>> ulabels.my_project.parents.add(is_project)
Query by
ULabel:>>> ln.Artifact.filter(ulabels=project).first()
Fields
- created_at DateTimeField
Time of creation of record.
- created_by ForeignKey
Creator of record, a
User.
- run ForeignKey
Last run that created or updated the record, a
Run.
- updated_at DateTimeField
Time of last update to record.
- id AutoField
Internal id, valid only in one DB instance.
- uid CharField
A universal random id, valid across DB instances.
- name CharField
Name or title of ulabel (required).
- description TextField
A description (optional).
- reference CharField
A reference like URL or external ID.
- reference_type CharField
Type of reference, e.g., donor_id from Vendor X.
- previous_runs ManyToManyField
Sequence of runs that created or updated the record.
- parents ManyToManyField
Parent labels, useful to hierarchically group labels (optional).
Methods
- classmethod from_values(values, **kwargs)¶
Bulk create validated records by parsing values for an identifier (a name, an id, etc.).
- Parameters:
values (
List[str] |Series|array) – A list of values for an identifier, e.g.["name1", "name2"].field – A
Registryfield to look up, e.g.,bt.CellMarker.name.organism – An Organism name or record.
public_source – A PublicSource record.
- Return type:
list[ULabel]- Returns:
A list of validated records. For bionty registries, also returns knowledge-coupled records.
Notes
For more info, see tutorial: Manage biological registries.
Examples
Bulk create from non-validated values will log warnings & returns empty list:
>>> ulabels = ln.ULabel.from_values(["benchmark", "prediction", "test"], field="name") >>> assert len(ulabels) == 0
Bulk create records from validated values returns the corresponding existing records:
>>> ln.save([ln.ULabel(name=name) for name in ["benchmark", "prediction", "test"]]) >>> ulabels = ln.ULabel.from_values(["benchmark", "prediction", "test"], field="name") >>> assert len(ulabels) == 3
Bulk create records from public reference:
>>> import bionty as bt >>> records = bt.CellType.from_values(["T cell", "B cell"], field="name") >>> records