lamindb.Run
¶
- class lamindb.Run(transform: Transform, name: str | None = None, entrypoint: str | None = None, params: dict | None = None, reference: str | None = None, reference_type: str | None = None, initiated_by_run: Run | None = None)¶
Bases:
SQLRecord,TracksUpdatesRuns of transforms such as the executions of a script.
- Parameters:
transform –
TransformA data transformation object.name –
str | None = NoneA name.params –
dict | None = NoneA dictionary of parameters.reference –
str | None = NoneFor instance, an external ID or URL.reference_type –
str | None = NoneFor instance,redun_id,nextflow_idorurl.initiated_by_run –
Run | None = NoneTherunthat triggers thisrun.
See also
Examples
Create a run record:
ln.Transform(key="Cell Ranger", version="7.2.0", kind="pipeline").save() transform = ln.Transform.get(key="Cell Ranger", version="7.2.0") run = ln.Run(transform)
Track a global run of a notebook or script:
ln.track() ln.context.run # global run object
You can pass parameters to
Run(transform, params=params)or add them later:run.params = { "learning_rate": 0.01, "input_dir": "s3://my-bucket/mydataset", "downsample": True, "preprocess_params": { "normalization_type": "cool", "subset_highlyvariable": True, }, } run.save()
In contrast to
.params, features are indexed in theFeatureregistry and can reference relational categorical values. If you want to link feature values, use:run.features.add_values({ "experiment": "My experiment 1", })
Guide: Track parameters & features
Attributes¶
- property features: FeatureManager¶
Manage annotations with features.
- property status: str¶
Get status of run.
Returns the status as a string, one of:
scheduled,re-started,started,completed,errored, oraborted.Examples
See the status of a run:
run.status #> 'completed'
Simple fields¶
- uid: str¶
Universal id, valid across DB instances.
- name: str | None¶
An optional name for this run.
- entrypoint: str | None¶
The entrypoint of the transform.
This could be a function name or the entry point of a CLI or workflow manager.
- started_at: datetime¶
The time this run started.
- finished_at: datetime | None¶
The time this run finished or aborted.
- params: dict¶
Parameters (plain JSON values).
- reference: str | None¶
A reference like a URL or an external ID such as from a workflow manager.
- reference_type: str | None¶
The type of the
referencesuch as a workflow manager execution ID.
- cli_args: str | None¶
CLI arguments if the run was invoked from the command line.
- created_at: datetime¶
The time of creation of this run.
- is_locked: bool¶
Whether the object is locked for edits.
- updated_at: datetime¶
Time of last update to record.
Relational fields¶
- environment: Artifact | None¶
The computational environment for this run.
For instance,
Dockerfile,docker image,requirements.txt,environment.yml, etc.
- created_by: User¶
The creator of this run ←
created_runs.
- initiated_by_run: Run | None¶
The run that initiated this run, via
initiated_runs.
- json_values: RelatedManager[JsonValue]¶
Feature-indexed JSON values ←
runs.
- ulabels: RelatedManager[ULabel]¶
The ulabels annotating this run ←
runs.
- linked_in_records: RelatedManager[Record]¶
This run is linked in these records as a value, via
linked_runs.
- artifacts: RelatedManager[Artifact]¶
The artifacts annotated by this run, via
runs.
- input_artifacts: RelatedManager[Artifact]¶
The artifacts serving as input for this run, via
input_of_runs.
- recreated_artifacts: RelatedManager[Artifact]¶
The output artifacts that were recreated by this run but originally created in another run, via
recreating_runs.Artifacts are considered recreated if they are reloaded due to a hash lookup match for an existing artifact.
- output_collections: Collection¶
The collections generated by this run, via
run.
- input_collections: RelatedManager[Collection]¶
The collections serving as input for this run, via
input_of_runs.
- recreated_collections: RelatedManager[Collection]¶
The output collections that were recreated by this run but originally created in another run, via
recreating_runs.Artifacts are considered recreated if they are reloaded due to a hash lookup match for an existing artifact.
- input_records: RelatedManager[Record]¶
The collections serving as input for this run, via
input_of_runs.
- records: RelatedManager[Record]¶
The records annotating this run, via
runs.
- projects: RelatedManager[Project]¶
The projects annotating this run ←
runs.
Class methods¶
- filter(**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: Query & search 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, 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. 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()
- save(*args, **kwargs)¶
Save.
Always saves to the default database.
- Return type:
TypeVar(T, bound= SQLRecord)
- classmethod describe()¶
Describe record including relations.
- Parameters:
return_str (
bool, default:False) – Return a string instead of printing.- Return type:
None|str
- 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.