lamindb.core.Registry#

class lamindb.core.Registry(*args, **kwargs)#

Bases: Model

Registry base class.

Extends django.db.models.Model.

Why does LaminDB call it Registry and not Model? The term “Registry” can’t lead to confusion with statistical, machine learning or biological models.

Fields

Methods

classmethod df(include=None)#

Convert to pd.DataFrame.

By default, shows all direct fields, except created_at.

If you’d like to include related fields, use parameter include.

Parameters:

include (Union[str, list[str], None], default: None) – Related fields to include as columns. Takes strings of form "labels__name", "cell_types__name", etc. or a list of such strings.

Return type:

DataFrame

Examples

>>> labels = [ln.ULabel(name="Label {i}") for i in range(3)]
>>> ln.save(labels)
>>> ln.ULabel.filter().df(include=["created_by__name"])
classmethod filter(**expressions)#

Query records (see Query & search registries).

Parameters:

expressions – Fields and values passed as Django query expressions.

Return type:

QuerySet

Returns:

A QuerySet.

See also

Examples

>>> ln.ULabel(name="my ulabel").save()
>>> ulabel = ln.ULabel.filter(name="my ulabel").one()
classmethod from_values(values, field=None, organism=None, public_source=None, mute=False)#

Bulk create validated records by parsing values for an identifier (a name, an id, etc.).

Parameters:
  • values (Union[List[str], Series, array]) – A list of values for an identifier, e.g. [“name1”, “name2”].

  • field (Union[str, DeferredAttribute, None], default: None) – A Registry field to look up, e.g., bt.CellMarker.name.

  • organism (Union[str, Registry, None], default: None) – An Organism name or record.

  • public_source (Optional[Registry], default: None) – A PublicSource record.

  • Return type:

    list[Registry]

    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
    

    .

    classmethod get(idlike)#

    Get a single record.

    Parameters:

    idlike (int | str) – Either a uid stub, a uid or an integer id.

    Return type:

    Registry

    Returns:

    A record.

    See also

    Examples

    >>> ulabel = ln.ULabel.get("2riu039")
    
    classmethod lookup(field=None, return_field=None)#

    Return an auto-complete object for a field.

    Parameters:
  • field (Union[str, DeferredAttribute, None], default: None) – The field to look up the values for. Defaults to first string field.

  • return_field (Union[str, DeferredAttribute, None], default: None) – The field to return. If None, returns the whole record.

  • Return type:

    NamedTuple

    Returns:

    A NamedTuple of lookup information of the field values with a dictionary converter.

    See also

    search()

    Examples

    >>> import bionty as bt
    >>> bt.settings.organism = "human"
    >>> bt.Gene.from_public(symbol="ADGB-DT").save()
    >>> lookup = bt.Gene.lookup()
    >>> lookup.adgb_dt
    >>> lookup_dict = lookup.dict()
    >>> lookup_dict['ADGB-DT']
    >>> lookup_by_ensembl_id = bt.Gene.lookup(field="ensembl_gene_id")
    >>> genes.ensg00000002745
    >>> lookup_return_symbols = bt.Gene.lookup(field="ensembl_gene_id", return_field="symbol")
    

    .

    save(*args, **kwargs)#

    Save.

    Always saves to the default database.

    Return type:

    None

    classmethod search(string, *, field=None, limit=20, return_queryset=False, case_sensitive=False, synonyms_field='synonyms')#

    Search.

    Makes reasonable choices of which fields to search.

    For instance, for Artifact, searches key and description fields.

    Parameters:
  • string (str) – The input string to match against the field ontology values.

  • field (Union[str, DeferredAttribute, None], default: None) – The field against which the input string is matching.

  • limit (Optional[int], default: 20) – Maximum amount of top results to return.

  • return_queryset (bool, default: False) – Return search result as a sorted QuerySet.

  • case_sensitive (bool, default: False) – Whether the match is case sensitive.

  • synonyms_field (Union[str, DeferredAttribute, None], default: 'synonyms') – Search synonyms if column is available. If None, is ignored.

  • Return type:

    DataFrame | QuerySet

    Returns:

    A sorted DataFrame of search results with a score in column score. If return_queryset is True, an ordered QuerySet.

    See also

    filter() lookup()

    Examples

    >>> ln.save(ln.ULabel.from_values(["ULabel1", "ULabel2", "ULabel3"], field="name"))
    >>> ln.ULabel.search("ULabel2")
                uid    score
    name
    ULabel2  o3FY3c5n  100.0
    ULabel1  CcFPLmpq   75.0
    ULabel3  Qi3c4utq   75.0
    

    .

    classmethod using(instance)#

    Use a non-default LaminDB instance.

    Parameters:

    instance (str) – An instance identifier of form “account_handle/instance_name”.

    Return type:

    QuerySet

    .