bionty.Source
¶
- class bionty.Source(entity: str, organism: str, name: str, version: str, currently_used: bool, description: str | None, url: str | None, md5: str | None, source_website: str | None)¶
Bases:
SQLRecord,TracksRun,TracksUpdatesVersions of ontology sources.
Warning
Do not modify the records unless you know what you are doing!
Simple fields¶
- uid: str¶
A universal id (base62-encoded hash of defining fields).
- entity: str¶
Entity class name with schema, e.g. bionty.CellType.
- organism: str¶
Organism name, use ‘all’ if unknown or none applied.
- name: str¶
Source name, short form, CURIE prefix for ontologies.
- version: str¶
Version of the source.
- in_db: bool¶
Whether this ontology has been added to the database.
- currently_used: bool¶
Whether this record is currently used.
- description: str | None¶
Source full name, long form.
- url: str | None¶
URL of the source file.
- md5: str | None¶
Hash md5 of the source file.
- source_website: str | None¶
Website of the source.
- is_locked: bool¶
Whether the object is locked for edits.
- created_at: datetime¶
Time of creation of record.
- updated_at: datetime¶
Time of last update to record.
Relational fields¶
- branch: Branch¶
The branch on which the object is defined.
- created_on: Branch¶
The branch on which the object was created.
- space: Space¶
The space in which the object is defined.
- created_by: User¶
The user that created the object.
- run: Run¶
The run that created the object.
- dataframe_artifact: Artifact¶
Dataframe artifact that corresponds to this source.
- artifacts: Artifact¶
Additional files that correspond to this source.
Class methods¶
- classmethod filter(*queries, **expressions)¶
Query records.
- Parameters:
queries – One or multiple
Qobjects.expressions – Fields and values passed as Django query expressions.
- Return type:
See also
Guide: Query & search registries
Django documentation: Queries
Examples
>>> ln.Project(name="my label").save() >>> ln.Project.filter(name__startswith="my").to_dataframe()
- classmethod get(idlike=None, **expressions)¶
Get a single record.
- Parameters:
idlike (
int|str|None, default:None) – Either a uid stub, uid or an integer id.expressions – Fields and values passed as Django query expressions.
- Raises:
lamindb.errors.ObjectDoesNotExist – In case no matching record is found.
- Return type:
See also
Guide: registries
Django documentation: Queries
Examples
record = ln.Record.get("FvtpPJLJ") record = ln.Record.get(name="my-label")
- classmethod to_dataframe(include=None, features=False, limit=100)¶
Evaluate and convert to
pd.DataFrame.By default, this returns up to 100 rows for a fast overview. Pass
limit=Noneto fetch all matching records.By default, maps simple fields and foreign keys onto
DataFramecolumns.Guide: Query & search registries
- Parameters:
include (
str|list[str] |None, default:None) – Related data to include as columns. Takes strings of form"records__name","cell_types__name", etc. or a list of such strings. ForArtifact,Record, andRun, can also pass"features"to include features with data types pointing to entities in the core schema. If"privates", includes private fields (fields starting with_).features (
bool|list[str], default:False) – Configure the features to include. Can be a feature name or a list of such names. If"queryset", infers the features used within the current queryset. Only available forArtifact,Record, andRun.limit (
int, default:100) – Maximum number of rows to display. Defaults to 100. IfNone, includes all results.order_by – Field name to order the records by. Prefix with ‘-’ for descending order. Defaults to ‘-id’ to get the most recent records. This argument is ignored if the queryset is already ordered or if the specified field does not exist.
- Return type:
DataFrame
Examples
Include the name of the creator:
ln.Record.to_dataframe(include="created_by__name"])
Include features:
ln.Artifact.to_dataframe(include="features")
Include selected features:
ln.Artifact.to_dataframe(features=["cell_type_by_expert", "cell_type_by_model"])
- classmethod search(string, *, field=None, limit=20, case_sensitive=False)¶
Search.
- Parameters:
string (
str) – The input string to match against the field ontology values.field (
str|DeferredAttribute|None, default:None) – The field or fields to search. Search all string fields by default.limit (
int|None, default:20) – Maximum amount of top results to return.case_sensitive (
bool, default:False) – Whether the match is case sensitive.
- Return type:
- Returns:
A sorted
DataFrameof search results with a score in columnscore. Ifreturn_querysetisTrue.QuerySet.
See also
filter()lookup()Examples
records = ln.Record.from_values(["Label1", "Label2", "Label3"], field="name").save() ln.Record.search("Label2")
- classmethod lookup(field=None, return_field=None)¶
Return an auto-complete object for a field.
- Parameters:
field (
str|DeferredAttribute|None, default:None) – The field to look up the values for. Defaults to first string field.return_field (
str|DeferredAttribute|None, default:None) – The field to return. IfNone, returns the whole record.keep – When multiple records are found for a lookup, how to return the records. -
"first": return the first record. -"last": return the last record. -False: return all records.
- Return type:
NamedTuple- Returns:
A
NamedTupleof lookup information of the field values with a dictionary converter.
See also
search()Examples
Lookup via auto-complete on
.:import bionty as bt bt.Gene.from_source(symbol="ADGB-DT").save() lookup = bt.Gene.lookup() lookup.adgb_dt
Look up via auto-complete in dictionary:
lookup_dict = lookup.dict() lookup_dict['ADGB-DT']
Look up via a specific field:
lookup_by_ensembl_id = bt.Gene.lookup(field="ensembl_gene_id") genes.ensg00000002745
Return a specific field value instead of the full record:
lookup_return_symbols = bt.Gene.lookup(field="ensembl_gene_id", return_field="symbol")
Methods¶
- restore()¶
Restore from trash onto the main branch.
Does not restore descendant objects if the object is
HasTypewithis_type = True.- Return type:
None
- delete(permanent=None, **kwargs)¶
Delete object.
If object is
HasTypewithis_type = True, deletes all descendant objects, too.- Parameters:
permanent (
bool|None, default:None) – Whether to permanently delete the object (skips trash). IfNone, performs soft delete if the object is not already in the trash.- Returns:
When
permanent=True, returns Django’s delete return value – a tuple of (deleted_count, {registry_name: count}). Otherwise returns None.
Examples
For any
SQLRecordobjectsqlrecord, call:sqlrecord.delete()
- classmethod describe(include=None)¶
Describe record including relations.
- Parameters:
return_str (
bool, default:False) – Return a string instead of printing.include (
None|Literal['comments'], default:None) – Include additional content. Use"comments"to display readme and comment blocks.
- Return type:
None|str
- get_deferred_fields()¶
Return a set containing names of deferred fields for this instance.
- refresh_from_db(using=None, fields=None, from_queryset=None)¶
Reload field values from the database.
By default, the reloading happens from the database this instance was loaded from, or by the read router if this instance wasn’t loaded from any database. The using parameter will override the default.
Fields can be used to specify which fields to reload. The fields should be an iterable of field attnames. If fields is None, then all non-deferred fields are reloaded.
When accessing deferred fields of an instance, the deferred loading of the field will call this method.
- async arefresh_from_db(using=None, fields=None, from_queryset=None)¶
- serializable_value(field_name)¶
Return the value of the field name for this instance. If the field is a foreign key, return the id value instead of the object. If there’s no Field object with this name on the model, return the model attribute’s value.
Used to serialize a field’s value (in the serializer, or form output, for example). Normally, you would just access the attribute directly and not use this method.
- async asave(*args, force_insert=False, force_update=False, using=None, update_fields=None)¶
- save_base(raw=False, force_insert=False, force_update=False, using=None, update_fields=None)¶
Handle the parts of saving which should be done only once per save, yet need to be done in raw saves, too. This includes some sanity checks and signal sending.
The ‘raw’ argument is telling save_base not to save any parent models and not to do any changes to the values before save. This is used by fixture loading.
- async adelete(using=None, keep_parents=False)¶
- prepare_database_save(field)¶
- clean()¶
Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field defined by NON_FIELD_ERRORS.
- validate_unique(exclude=None)¶
Check unique constraints on the model and raise ValidationError if any failed.
- date_error_message(lookup_type, field_name, unique_for)¶
- unique_error_message(model_class, unique_check)¶
- get_constraints()¶
- validate_constraints(exclude=None)¶
- clean_fields(exclude=None)¶
Clean all fields and raise a ValidationError containing a dict of all validation errors if any occur.