Changelog 2024¶
Note
💡 LaminDB implements “migration-based versioning”. When upgrading your LaminDB installation to a new minor
version in major.minor.patch
, you also migrate your database via lamin migrate deploy
.
Get notified by watching releases for the lamindb, laminhub-public, and bionty GitHub repositories.
2024-11-21 db 0.77.0 | bionty 0.53.0¶
✨ Enable validation of Literal
and other field types PR @sunnyosun
A
Literal
-typedCharField
is validated for anyRecord
:from lnschema_core import Record, fields CRISPRType = Literal[ "CRISPRi", "CRISPRa", ] class Treatment(Record): system: CRISPRType = fields.CharField() Treatment(system="crispr") #> FieldValidationError: #> system: crispr is not a valid value #> → valid values are: CRISPRa, CRISPRi
You can leverage Django’s rich field validation by inheriting from
ValidateFields
and using dedicated field types or custom regex expressions:from lnschema_core import Record, ValidateFields from django.core.validators import RegexValidator class Reference(Record, ValidateFields): url: str | None = fields.URLField() """URL linking to the reference.""" doi: str = fields.CharField( validators=[ RegexValidator( regex=r"^(?:https?://(?:dx\.)?doi\.org/|doi:|DOI:)?10\.\d+/.*$", message="Must be a DOI (10.1000/xyz123 or https://doi.org/10.1000/xyz123)", ) ], ) """A Digital Object Identifier (DOI).""" Reference(doi="abc.ef", url="myurl.com") #> FieldValidationError: #> url: myurl.com is not valid #> → Enter a valid URL. #> doi: abc.ef is not valid #> → Must be a DOI (10.1000/xyz123 or https://doi.org/10.1000/xyz123)
These possibilities are now leveraged in all schema modules.
🎨 Leverage a more concise way for defining registries: lnschema-core findrefs ourprojects clinicore cellregistry @sunnyosun
🎨 Squash migrations for faster instance creation: lnschema-core bionty wetlab @sunnyosun
Bionty changes.
✨ Add support for local source files in
sources.yaml
PR @mossjacob✨ Support
taxa="plants"
inEnsemblGene
PR @mossjacob
2024-11-15 db 0.76.16¶
New features.
✨ Support saving R code including
.qmd
and.Rmd
PR @falexwolf
Other enhancements.
🚸 Refactor
ln.track()
to improve logging and method signature PR @falexwolf🚸 Enable to query with records from a different database instance PR @falexwolf
🚸 Enable autocompletion for inherited methods in Jupyter PR @Koncopd
Fixes.
🐛 Fix transfering artifacts from a source instance with fewer schema modules PR @sunnyosun
🐛 Fix hard-coded “name” field during search PR @sunnyosun
🐛 Fix registering Gene columns in DataFrameCurator PR @sunnyosun
Deprecations.
2024-11-13 hub 0.30¶
✨ A link that omits the last 4 version-coding characters now links to the latest version of a record, e.g., 13VINnFk89PE → 13VINnFk89PE0006. PR @chaichontat
🚸 Filter selectors are more intuitive. PR @chaichontat
✨ Plots can now visualize time series. PR @chaichontat @Golodhros
Further enhancements.
✨ Table columns are now resizable PR @chaichontat @awgaan
✨ UID copy button are now in custom tables PR @chaichontat
🚸 Invalid filter triggers error PR @chaichontat
Fixes.
🐛 Fix intermittent page reloading PR @chaichontat
2024-10-29 db 0.76.15¶
✨ Stream pyarrow.dataset
via Artifact.open()
PR @Koncopd
df = pd.DataFrame({"col1": [0, 0, 1, 1], "col2": [6, 7, 8, 9]})
df.to_parquet("df.parquet", engine="pyarrow", partition_cols=["feat1"])
artifact = ln.Artifact("df.parquet", description="A partitioned parquet").save()
with artifact.open() as dataset: # get pyarrow.dataset.Dataset
batches = dataset.to_batches() # get a streaming iterator over batches
dataset.to_table().to_pandas() # read into memory and convert to pandas Dataframe
✨ Add .query_parents()
and .query_children()
to hierachical registries PR @Koncopd
import lamindb as ln
label1 = ln.ULabel(name="label1").save()
label2 = ln.ULabel(name="label2").save()
label3 = ln.ULabel(name="label3").save()
label1.children.add(label2)
label2.children.add(label3)
label3.query_parents() # returns a QuerySet with label1 and label2
label1.query_children() # returns a QuerySet with label2 and label3
More changes:
2024-10-18 db 0.76.14 | bionty 0.52.0¶
Features.
✨ Safe handling of renaming internal features and labels PR @sunnyosun
✨ Enable curating multiple categorical features per artifact against the same label registry PR @falexwolf
User experience.
🚸 Automate
Curator.add_validated_from
and remove it from the API Breaking PR @sunnyosun🚸 Remove unnecessary
BioRecord.list_source()
Breaking PR @sunnyosun
Bionty changes.
🎨 Add unique constraints and fix
gene_ref_is_symbol
tolabel_ref_is_name
PR @falexwolf🎨 Remove update in
add_ontology_from_df()
PR @sunnyosun
Fixes.
Deprecations.
2024-10-14 hub 0.29¶
✨ Advanced filters. @chaichontat @adamdev21
✨ Filter on click. @chaichontat
✨ Links to filtered artifacts in record tables. @chaichontat
✨ Links to artifacts in Features dashboard. @chaichontat
💄 Prettify plotting panels on Overview
page PR @chaichontat
Enhancements.
✨ Make filtered views sharable by coding filters in the URL @chaichontat
🐛 Prevent duplicates from showing up in filters @chaichontat
✨ Add
created_by
filtering to transform list @chaichontat✨ Version warning banner @sunnyosun
🐛 Use backend to search selectors @chaichontat
🚸 Allow hyphens in handles @chaichontat
💄 Simplify text on landing page PR @falexwolf
💄 Show instance description on user dashboard @adamdev21
✨ Group ULabels by Features in detailed artifact view @chaichontat
💄 Remove ID from field sort hierarchy @chaichontat
🚸 Rename
Data
tab toArtifacts
and sort filters @chaichontat✨ Enable to add a schema module via the UI @adamdev21 @chaichontat @sunnyosun
Fixes.
💄 Do not display N/A fields in hover card
🐛 Fix duplicated alias error with filters
🐛 Fix collection copy button
🐛 Deduplicate transform references in “Outputs” section
🐛 Fix hang when loading transform
🐛 Fix transform pane collapsing behavior
🐛 Fix flicker
Deprecations.
🚸 Beta API key is now stable; deprecate legacy API key
2024-10-11 db 0.76.13¶
🚸 Do not error if a schema module of an instance isn’t installed PR @falexwolf
🚸 More decent failing upon invalid
lamin init
calls PR @Koncopd🚸 Clearer feedback when somebody tries to switch the default instance PR @falexwolf
🐛 Fix
.get()
with.using()
PR @sunnyosun🐛 For
.view_lineage()
for circular input/outputs PR @sunnyosun🐛 Fix transferring to target instances that have more schema modules than the source instance PR @sunnyosun
🐛 Fix monkey-patching
__getitem__
onQuerySet
PR @sunnyosun🐛 Do not double track runs PR @falexwolf
2024-10-08 db 0.76.12 | bionty 0.51.2¶
✨ Overhaul
save_vitessce_config()
to support multiple artifacts and non-.zarr
PR @keller-mark🚸 Query with typed labels through
.features
PR @falexwolf📝 Document how to query by dictionary-like run parameters PR @falexwolf
2024-10-02 hub 0.28¶
Major improvements.
✨ SSO login + new API key @fredericenard @Koncopd @chaichontat @sunnyosun
💄 Display
lamin connect
on theOverview
andlamin load
on theTransform
page @chaichontat💄 Overhauled
Features
page @chaichontat💄 A
ULabels
page @adamdev21 PR🚸 Show only latest versions of versioned entities & add a version drop down to
Artifact
&Collection
in analogy toTransform
@adamdev21 @chaichontat PR💄 Hover card for
ULabel
annotations @adamdev21✨ Overhauled
Settings
page and enable to change handle & name @chaichontat
Minor changes.
🐛 Fix
ulabel
filtering on Artifacts page @adamdev21🐛 Fix collection page @sunnyosun
🐛 Do not re-encode vitessce url if it’s non-lamin @sunnyosun
🚸 A friendly message when a user still drafts a transform and hasn’t provided source code or run report @sunnyosun
🚸 Use
key
as a download name for a transform @sunnyosun🚸 Only show linked labels in filters @adamdev21
💄 Order transforms & runs by
created_at
@sunnyosun💄 On
Overview
page, show data formats, feature sets, and artifactsize
andcounts
@chaichontat✨ Support
refSpecUrl
inVitessceConfig
@sunnyosun
2024-10-01 db 0.76.11¶
✨ Add a reference manager schema module:
findrefs
PR @falexwolf🐛 Fix label name display in
.describe()
PR @falexwolf🐛 Fix permission error when saving a new artifact on python 3.12 PR @Koncopd
💄 Strip
NotebookNotSaved
error from report afterln.finish()
PR @Koncopd
2024-09-30 db 0.76.10¶
🚸 Re-worked the CLI:
lamin load
→lamin connect
&lamin get
→lamin load
PR @Koncopd @ap–⚡ Improve performance of
ln.connect()
,lamin connect
, andlamin load
for a notebook PR @falexwolf⚡️ Speed up curation workflows through
from_values
PR @sunnyosun🚸 Improve
lamin load
UX for notebooks & scripts PR @falexwolf🚸 Transfer: Warn about inconsistencies between source & target instances PR @falexwolf
🎨 Move
.from_values()
fromRecord
toCanValidate
PR @falexwolf📝 Document how to work with run parameters PR @falexwolf
✨ Track transfers as transforms PR @falexwolf
⚡️ Speed up describe PR @sunnyosun
🚸 Minimal
ln.track()
PR @falexwolf✨ Enable to
lamin load
from on-prem domains PR @falexwolf
2024-09-26 db 0.76.9¶
✨ Allow filtering
.obs
indices inMappedCollection
Guide PR @Koncopd📝 Document notebook templates Guide PR @falexwolf
Curating perturbations
Genetic, compound, and environmental perturbations and their targets can be curated with the wetlab
schema.
This can be achieved at varying levels of detail. For example, with a high degree of detail:
import wetlab as wl
EGFR_kd = wl.GeneticTreatment(
system="CRISPR Cas9",
name="EGFR knockdown",
sequence="AGCTGACCGTGA",
on_target_score=85,
off_target_score=15
).save()
EGFR_gene = bt.Gene.from_source(symbol="EGFR").save()
EGFR_kd_target = wl.TreatmentTarget(name="cell growth").save()
EGFR_kd_target.genes.add(EGFR_gene)
artifact.genetic_treatmends.add(EGFR_kd)
2024-09-23 db 0.76.8¶
🐛 Ensure
is_latest
is set toFalse
in previous version if matching onartifact.key
PR @falexwolf✨ Store artifacts under their virtual keys in cache PR @Koncopd
2024-09-18 db 0.76.7 | bionty 0.50.2¶
✨ Enable getting the latest run environment for a transform PR @falexwolf
✨ Enable displaying images via
artifact.load()
, add documentation for artifact loaders PR @falexwolf🚸 Do not throw an error but prompt upon
ln.context.track()
in a notebook PR @falexwolf🚸 Allow to use
Collection.mapped()
without saving the collection PR @Koncopd🚸 Simplify CLI commands PR @falexwolf
Technical changes
Ontology versions
2024-09-09 db 0.76.6 | bionty 0.50¶
✨ Enable negations in
filter()
PR @falexwolf✨
lamin get
viakey
oruid
PR @falexwolf🎨 Replace direct relation of
Collection
toFeatureSet
with indirect relation throughArtifact
PR @falexwolf🎨 Remove backward relationships for
Run
,User
&Source
foreign keys PR PR @falexwolf @sunnyosun🐛 Reload in
Transform()
upon passing existinguid
PR @falexwolf
2024-09-05 db 0.76.5¶
🐛 Fix
lamin save
for source code updates PR @falexwolf🔒 Allow login with Beta API key via CLI PR @fredericenard @Koncopd
2024-09-04 db 0.76.4¶
🚸 Make source code searchable Details & PR @falexwolf @chaichontat
🐛 Fix marking latest transform as
is_latest
PR @falexwolf✨ Support lists as values in validation PR @sunnyosun
2024-08-30 db 0.76.3 | bionty 0.49¶
✨ tiledbsoma
integration. Guide PR @Koncopd
Example
Create a tiledbsoma.Experiment
array store or append AnnData
objects to an existing store.
# create new versioned tiledbsoma.Experiment
artifact = ln.integrations.save_tiledbsoma_experiment(
adatas,
measurement_name="RNA"
)
# append to existing tiledbsoma.Experiment
revised_artifact = ln.integrations.save_tiledbsoma_experiment(
adatas,
measurement_name="RNA",
revises=artifact
)
Bionty updates.
More changes.
🚚 Deprecate
Curate
in favor ofCurator
PR @sunnyosun🔥 Remove
lamin register
and password argument oflamin login
PR PR @falexwolf
2024-08-26 hub 0.27¶
✨ Instance overview page. @chaichontat
Screenshot
💄 Show Vitessce button next to dataset instead of VitessceConfig
file. @sunnyosun
🏗️ Much improved on-prem deployment. @fredericenard
2024-08-23 db 0.76.2¶
🚸 Simplify versioning. PR @falexwolf
Semantic version strings in .version
are now optional as in git.
For Artifact
& Transform
, you can now also create new versions by passing the key
argument.
artifact_v1 = ln.Artifact.from_df(df, key="my_datasets/my_study1.parquet").save()
# below automatically creates a new version of artifact_v1 because the `key` matches
artifact_v2 = ln.Artifact.from_df(df_updated, key="my_datasets/my_study1.parquet").save()
🚚 Deprecate
is_new_version_of
argument in favor ofrevises
🚚 Deprecate passing
version
to constructors; rather set.version
after creating records
More changes.
💄 Simpler icons PR @sunnyosun
2024-08-16 db 0.76.1¶
🚸 Overhauled context tracking experience with ln.context.track()
Details & PR @falexwolf @chaichontat
ln.context.uid = "FPnfDtJz8qbE0000" # <-- auto-generated by ln.context.track()
# track the execution of your notebook or script with inputs & outputs
ln.context.track()
What was the previous experience?
Now:
Previously:
How does it look on the hub?
If you don’t label with a semantic version tag, you’ll get an auto-generated revision id.
⚠️ Breaking change: ln.track()
now returns None
instead of a Run
. Access the run via ln.context.run
instead.
More changes:
2024-08-14 db 0.76¶
⚡️ Add boolean field
IsVersioned.is_latest
to speed up queries for latest versions PR @falexwolf @fredericenard @chaichontat🐛 Fix length limitation for external hash parsing PR @falexwolf
⚡️ Speed up
BioRecord.import_from_source
PR @sunnyosun🎨 Make more backward accessors private and type the rest PR @falexwolf
2024-08-10 hub 0.26¶
🚸 Backend search & filter via multiple relationships @chaichontat @fredericenard
✨ Login via Microsoft @fredericenard
💄 Details in hover cards @chaichontat
2024-08-08 db 0.75.1¶
🚸 Improved the cellxgene_lamin
curation guide.
🐛 Fixes for
lamindb.Curate
PR PR @sunnyosun✨ Allow excluding values in
Curate.validate
PR @sunnyosun
2024-08-08 bionty 0.48¶
New ontology versions.
2024-08-03 db 0.75¶
✨ Track mutations of array stores. Guide PR @Koncopd
Artifacts that store mutable arrays can lead to non-reproducible queries.
To monitor reproduciblity and data lineage, mutations are now tracked when a context manager and
Artifact.open(mode="w")
fortiledbsoma
array stores is used:with artifact.open(mode="w") as array: # mutate `artifact` # `artifact` now points to a new version of the artifact with an updated hash
🚸 A better structured API. PR @falexwolf
🚸 Easier typing & maintenance of categorical fields via
typing.Literal
instead of Django’s migration-dependentCharField.choices
🚸 Less clutter in auto-complete
🚚 All fields pointing to link records start with
links_
🚚 Several fields for
Artifact
are now private via_
prefix:accessor
,key_is_virtual
,feature_values
,param_values
,hash_type
,previous_runs
🎨 More consistency
🚚 Rename
Transform.parents
toTransform.predecessors
to disambiguate procedural/temporal from ontological/conceptual hierachies🎨 Feature names are now guaranteed to be unique in a lamindb instance
Feature.name
🎨 Consistent length of hash fields:
HASH_LENGTH=22
🚚 Rename
input_of
toinput_of_runs
🎨
Transform.latest_report
is now a property point toTransform.latest_run.report
to simplify the schema🎨
Artifact.type
now defaults toNone
when passing apath
so that auxiliary files and folders aren’t labeled asdataset
🚸 Better definition of
Collection
🚚 Rename fields
.artifact
to.meta_artifact
and.unordered_artifacts
to.artifacts
Iteration over an ordered
QuerySet
of artifacts is now possible via.ordered_artifacts
For collections that have a single data artifact, access it via
.data_artifact
🏗️ Towards searchable source code
🚚 Rename
Transform.source_code
toTransform._source_code_artifact
Re-introduce
Transform.source_code
as a text field together with a fieldhash
Better storage management.
🚸 Enable deleting artifacts in all managed storage locations of the current instance PR @falexwolf
♻️ Do not write storage records to hub for local test instances PR @falexwolf
🐛 Fix populating
storage.instance_uid
duringinit_instance
PR @falexwolf
Various updates.
2024-08-03 bionty 0.47¶
🏗️ Bionty is now a single Python package. PR PR PR PR PR
🏗️
lnschema-bionty
andbionty-base
are integrated intobionty
🚸 Considerably simpler UX: see Manage biological registries PR @sunnyosun
⚠️ Migration: Once you load an instance, you’ll be asked to uninstall lnschema_bionty
and lamin migrate deploy
On the SQL level, tables are now prefixed with
bionty_
instead oflnschema_bionty_
On the Django level, you can mount the
bionty
instead of thelnschema_bionty
apps
🚸 You can now import from in-house ontology sources. PR @sunnyosun
🚚 Rename
PublicSource
toSource
&from_public
tofrom_source
Import from any parquet file into your registry, akin to how Bionty imports public ontology sources
User experience.
⚡ Performantly import bulk records via
.import_from_source()
🚸 More reliable
ontology_id
field recognition🎨
CellMarker.name
is now unique together withorganism
PR sunnyosun
New ontologies.
2024-07-26 hub 0.25¶
Overhauled the REST API: better performance and architecture.
⚡ Optimize query builder @fredericenard
✨ GroupBy endpoint @fredericenard
♻️ Improved API schema @fredericenard @chaichontat
UI improvements.
💄 Add details in hover card @chaichontat
🐛 Stop settings from flickering @chaichontat
2024-07-26 db 0.74.3¶
⚡ Speed up populating parent records by an order of magnitude, remove the parents
keyword (PR @sunnyosun).
Features.
✨ Allow for multiple local storage locations with the same root path PR @falexwolf
✨ Add
add_from_df
method toBioRecord
PR @sunnyosun
Chores.
⬆️ Upgrade to pydantic v2 PR @falexwolf
2024-07-22 db 0.74.2¶
The API is now cleaner and fields are typed.
Details
All users who don’t use Django outside of lamindb can set Django’s internal API that clutters the Record
name spaces by running: lamin set private-django-api
on the command line.
🚸 Cleaner API PR @falexwolf @Koncopd
✨ Add global
private-django-api
setting PR @falexwolf🏷️ Add types to fields PR @falexwolf
tiledbsoma
is now better supported.
Better names.
🚚 Deprecate
Artifact.backed()
in favor ofArtifact.open()
PR @Koncopd🚚 Deprecate
Annotate
in favor ofCurate
PR @falexwolf🚚 Deprecate
Registry
in favor ofRecord
PR @falexwolf
Better documentation.
📝 Improve the curation guide PR PR @sunnyosun @falexwolf
📝 Improve the CLI docs PR @falexwolf
Security updates & bug fixes.
🐛 Fix return values of
.save()
for a few classes PR @falexwolf
2024-07-01 hub 0.24¶
✨ Add a checkbox for instance setting
keep-artifacts-local
PR @chaichontat @sunnyosun✨ New endpoint:
create-instance
PR @fredericenard💄 More detailed feature view PR @chaichontat
✨ Image preview PR @chaichontat
✨ Artifact backlinks PR @chaichontat
2024-06-26 db 0.74.1¶
♻️ Refactor ln.settings
PR @falexwolf.
✨ Pass custom names for scripts via
ln.settings.transform.name = "My script"
⚠️
ln.settings.storage
returns aStorageSettings
object (root vialn.settings.storage.root
)
Features.
✨ Support different join types in
QuerySet.df()
PR @insavchuk
Use cases.
📝 First version of tiledbsoma guide PR Koncopd
📝 First version of wandb guide PR felix0097
Docs.
📝 Update hub screenshots PR @sunnyosun
2024-06-20 db 0.74¶
✨ You can now distinguish model-like and dataset-like artifacts via a type
field in the Artifact
registry.
🚸 Leverage
artifact.params.add_values()
to annotate model-like artifacts like you leverageartifact.features.add_values()
to annotate dataset-like artifacts🏗️ Add
type
field toArtifact
, allow linking model-like artifacts against params, validate params akin to validating features, enable features-based annotation with non-ulabels PR @falexwolf
2024-06-13 db 0.73.2¶
🐛 Fix clashing reverse accessors for
.previous_runs
and.run
PR @falexwolf
2024-06-05 db 0.73.1¶
🏗️ Instantly synchronize instance schema with the hub PR @fredericenard
🐛 Fix generation of
uid
for manual Transform constructor PR @falexwolf🔥 Deleting
artifact.stage()
in favor ofartifact.cache()
(was deprecated in 0.70.0)
2024-05-29 db 0.73.0¶
Annotating & querying by features improved:
✨ Support non-categorical feature values PR @falexwolf
✨ Annotate dict-style with features & values PR @falexwolf
✨ Query by features via
.features.filter(key=value)
PR @falexwolf🏗️ Feature values decoupled from feature sets PR @falexwolf
Example:
# annotate dict-style (feature & category names get validated)
artifact.features.add_values({
"species": "setosa",
"scientist": ["Barbara McClintock", "Edgar Anderson"],
"instrument": "Leica IIIc Camera",
"temperature": 27.6,
"study": "Study 0: initial plant gathering",
"is_awesome": True
})
# get the dict back
artifact.features.get_values()
# query by feature
ln.Artifact.features.filter(is_awesome=True)
Various improvements:
🚚 Additional non-breaking constraints in the core schema PR @falexwolf
🚸 Make
.upload_from()
,.download_to()
, and.view_tree()
more user friendly PR @falexwolf PR @Koncopd🚸 More intuitive version updating dialogue PR @falexwolf
🐛 Actually add tracking run for entities beyond Artifact & Collection PR @falexwolf
🚸
ln.track()
returnsrun
PR @falexwolf🚸 Better duplicate detection and search PR @falexwolf
🚸 Prettier
.describe()
PR @falexwolf🚸 More interactivity in
lamin save
PR @falexwolf🚸
create
flag in.from_values()
PR @falexwolf🚸 Better ordering of fields in dataframe & record representations PR @falexwolf
📝 Improved API reference: docs now show relationship attributes PR @falexwolf
2024-05-19 db 0.72.1¶
⬆️ Update bionty PR @sunnyosun
🐛 Deal with migration errors when keep-artifacts-local is true PR @falexwolf
2024-05-19 db 0.72.0¶
✨ Extend managed access for AWS S3 to arbitrary paths PR @Koncopd @fredericenard
✨ Extended data lineage tracking PR @falexwolf
Now store all creating runs and all updating runs for any entity, not just for
Artifact
&Collection
, e.g., runs can now haveCellType
record outputsCode is simpler through inheritance from two new base classes:
TracksRun
andTracksUpdates
♻️ Briefer and richer syntax for denoting feature types, renamed
Feature.type
toFeature.dtype
, e.g., for categorical features, a valid type can be:cat[ULabel|bionty.Drug]
PR @falexwolf✨ Support non-categorical metadata PR @falexwolf
Track non-categorical features:
int
,float
,bool
,datetime
, lists & dictionaries stored in aFeatureValue
registryTrack arbitrary typed parameters for runs through a
Param
registry analogous to theFeature
registry: this replaces the hard-to-validate, hard-to-migrate, and hard-to-queryjson
field ofRun
🏗️ Refactor link models PR PR @falexwolf
All annotation-related links are now stratified by
Feature
: what held forULabel
now also holdsCellType
and all otherBionty
registriesIndicate whether semantic keys were used during validation to enable warnings upon renames
Protect artifact annotations rather than cascade delete them
More consistent naming of link models, e.g.,
ulabels.artifact_links
instead ofulabels.artifactulabel_set
Dropped linking
Bionty
entities directly againstCollection
Pruned & squashed migrations for faster instance creation
2024-05-14 db 0.71.3¶
🎨 Enable transfer when schema don’t match PR @sunnyosun
✨ Get artifacts through the CLI PR @falexwolf
⚡️ Improve the speed of describe PR @sunnyosun
♻️ Refactor search PR @falexwolf
✨ Introduce bulk update PR @falexwolf
🚸 No need to pass organism if validating on ids PR @sunnyosun
2024-05-07 db 0.71.2¶
✨ Enable passing parameters to
ln.track()
PR @falexwolf
2024-05-07 db 0.71.1¶
🚸 Upload source code of scripts upon
ln.finish()
and no longer uponln.track()
PR @falexwolf🎨 Make
features.add_feature_set
public PR @sunnyosun🎨 Use the same
uid
for the same feature set in transfer PR @sunnyosun🎨 Upon upload switch to virtual key PR @falexwolf
♻️ Extend valid suffixes to composite suffixes PR @falexwolf
🔥 Remove little-used
artifact.view_tree()
PR @falexwolf
2024-05-01 db 0.71.0¶
✨ Manage multiple storage locations with integrity PR @falexwolf
🚸 Make save return self PR @falexwolf
2024-04-24 db 0.70.4¶
✨ Allow passing path to
.from_anndata
PR @sunnyosun🚸 In
.setup.delete()
, check for data deletion & delete from hub PR @falexwolf⚡️ Speed up
latest_version
PR @falexwolf🚸 Better user feedback on folder-like artifacts PR @falexwolf
2024-04-22 db 0.70.3¶
🚸 Update metadata like description upon re-running PR @falexwolf
🐛 Fix detection of AnnData in zarr and h5ad, refactor directory upload PR @Koncopd
🚸 Raise error if transforms of type notebook or script are passed manually PR @falexwolf
2024-04-19 db 0.70.2¶
♻️ In Vitessce integration, separate
VitessceConfig
from its referenced artifacts PR @falexwolf🚸 In
ln.finish()
, remove flagi_saved_the_notebook
PR @falexwolf
2024-04-18 db 0.70.1¶
🐛 Fix
public_source
in inspect PR @sunnyosun
2024-04-17 db 0.70.0¶
🚸 Update data source in case transform is re-run PR @falexwolf
🚸 Enable to label transforms via
transform.ulabels
PR @falexwolf🚚 Deprecate
stage()
in favor ofcache()
PR @falexwolf
2024-04-12 db 0.69.10¶
✨ Add
.obsm
and.layers
toMappedCollection
and renamelabel_keys
toobs_keys
PR @Koncopd🚸 Eliminate kwargs PR @sunnyosun
✨ Introduce
Annotate.from_mudata
PR @sunnyosun
2024-04-08 db 0.69.9¶
🐛 Fix clashes for multiple processes PR @falexwolf
2024-04-04 db 0.69.8¶
2024-04-03 db 0.69.7¶
✨ Add ability to upload arbitrary files or folders from CLI PR @falexwolf
🐛 Fix anndata backed mode incompatibility with scipy 1.13.0 f
2024-04-02 db 0.69.6¶
🚑️ Temp fix region for non-hosted buckets PR @sunnyosun
2024-03-30 db 0.69.5¶
♻️ Improve Annotate API PR PR @sunnyosun @falexwolf
✨ Introduce
Registry.get()
andlamin get
(replaceslamin stage
) PR @falexwolf
2024-03-30 db 0.69.4¶
♻️ Add Vitessce integration PR @falexwolf
♻️ Refactor collections PR @falexwolf
2024-03-28 db 0.69.3¶
✨ Introduce annotation flow via
Annotate.from_df
andAnnotate.from_anndata
PR 1 2 3 @sunnyosun
2024-03-26 db 0.69.2¶
2024-03-18 db 0.69.1¶
✨ To try out, add lamindb.validation
with the Validator
class PR @sunnyosun
2024-03-17 db 0.69.0¶
Main new features:
✨ Integrate lamindb with git PR PR @falexwolf
✨ Introduce
ln.finish()
, track run finish times asrun.finished_at
, renamerun.run_at
torun.started_at
, upload notebooks duringln.finish()
PR @falexwolf🚸 Upload script source code and environment during
ln.track()
PR @falexwolf
Other changes:
✨ Allow including simple related fields in
.df()
PR @falexwolf🚚 Move transform settings into settings PR @falexwolf
✨ Add
latest_version
filter forQuerySet
PR @falexwolf🚚 Rename
transform.short_name
totransform.key
PR @falexwolf♻️ Add a JSON field to
Run
PR @falexwolf
2024-03-11 db 0.68.2¶
🚸 Move transform & run artifacts into cache before uploading PR @falexwolf
🚸 More sensible transform types PR @falexwolf
🚚 Rename
lnschema_lamin1
towetlab
PR @falexwolf
2024-03-08 db 0.68.1¶
🚸 You can now use
ln.connect()
to connect to a LaminDB instance PR @falexwolf🚸 You can no longer delete data from non-default storage locations, as these might be tracked in other instances PR @sunnyosun
🚸 Enable transferring data from local instances to remote instances PR @sunnyosun
2024-03-01 db 0.68.0¶
🚸 Decouple features linking from Artifact construction PR 1 2 3 @sunnyosun.
# default constructor for PathLike
artifact = ln.Artifact("mysc.h5ad", description="raw data")
# from_ constructors for other types
artifact = ln.Artifact.from_anndata(mysc_adata, description="raw data") # no longer links features
artifact = artifact.save()
# high-level feature linking
artifact.features.add_from_anndata(var_field=bt.Gene.ensembl_gene_id)
artifact.features.add_from_df()
# low-level feature linking
meta = ln.Feature.from_values(mysc_adata.obs.columns, field="name")
genes = bt.Gene.from_values(mysc_adata.var.ensembl_gene_id, field="ensembl_gene_id")
artifact.features.add(genes, slot="obs")
artifact.features.add(genes, slot="var")
# labels linking (no change)
labels = ln.ULabel.from_values(adata.obs.donor, field=...)
ln.save(labels)
artifact.labels.add(labels)
🚸 Can now use
ln.track()
withoutlamin track
PR @falexwolf🐛
lamin stage
respects new URL design PR @falexwolf🚚 Rename
.dev
to.core
PR @falexwolf
2024-02-02 db 0.67.3¶
🚸 Can now import
bionty
instead oflnschema-bionty
PR @sunnyosun♻️ Use Click for CLI PR @chaichontat
🎨 Make
Collection.save()
ACID PR @falexwolf✨ Add
add_to_version_family
PR @sunnyosun🐛 Transfer
collection.artifacts
PR @sunnyosun
2024-01-14 db 0.67.2¶
✨ Enable staging notebooks & code using the CLI PR @falexwolf
2024-01-12 db 0.67.1¶
🐛 Fix idempotency of
collection.save()
PR @falexwolf🚸 Disallow bulk-delete for Artifact, Transform & Collection PR @falexwolf
🚸 Init transform versions at 1 PR @falexwolf
✨ Load json and html files PR @falexwolf
2024-01-11 db 0.67.0¶
🚚 Rename
.bionty
to.public
,.from_bionty
to.from_public
PR @sunnyosun
2024-01-09 db 0.66.1¶
🐛 Fix id matching in view_lineage PR @sunnyosun
♻️ Incorporate edge cases in
inner
andouter
join inCollection.mapped
PR @Koncopd🎨 Not create organism records when calling
.bionty()
PR @sunnyosun
2024-01-07 db 0.66.0¶
🚸 Add anonymous access (now works without login) PR1386 @falexwolf
🎨 Introduce ordered collections and simplify
.mapped()
PR1390 @falexwolf📝 Re-write quickstart PR1387 @falexwolf
2024-01-05 db 0.65.1¶
🩹 Prepare a potential migration of the hub to Django PR1385 @falexwolf
🚸 Various improvements PR1384 @falexwolf
🩹 Track suffix of requirements.txt PR1383 @falexwolf
✨ Add outer join and categories caching to Collection.mapped PR1380 @Koncopd
♻️ Except memory error PR1382 @falexwolf
2024-01-02 db 0.65.0¶
🚚 Rename
Dataset
toCollection
PR1377 @falexwolf✨ Track run environment PR1368 @falexwolf
✨ Allow transfer from private instances PR1370 @falexwolf
🚸 Speed up transfer and enable transfer parents PR1371 @sunnyosun
🎨 Version based on
stem_uid
instead ofinitial_version_id
and replace__lamindb_uid_prefix__
with__transform_stem_uid__
PR1369 PR1375 PR1373 @bpenteado @falexwolf🎨 Name
.lndb
files by instance id PR1372 @falexwolf
bionty¶
Name |
PR |
Developer |
Date |
Version |
---|---|---|---|---|
🚚 Rename |
2024-01-12 |
0.36.0 |
||
🚚 Rename |
||||
🚚 Rename |
2024-07-26 |
0.44.0 |
||
🎨 Do not add obsolete terms due to ontology_id duplication |
2024-07-25 |
|||
⚡️ Speed up parents |
2024-07-22 |
|||
🚚 Rename registry to record |
2024-07-17 |
|||
♻️ Consciously use class method |
2024-07-10 |
|||
🐛 Fix clashing reverse accessors between |
2024-06-13 |
0.43.0 |
||
♻️ Reformulate data lineage, remove json field from run |
2024-05-19 |
0.42.0 |
||
♻️ Protect gene, protein, cell_marker & pathway in their FeatureSet relationships |
2024-05-18 |
|||
🏗️ Naming conventions for link tables, protecting deletion in link tables, maintaining integrity upon label & feature renames |
2024-05-18 |
|||
♻️ Account for migrations in lnschema_core |
2024-05-17 |
|||
🔥 Prune migrations |
2024-05-16 |
|||
🏗️ Spell out link tables with |
2024-05-16 |
|||
🔥 Remove linking Collection to all Bionty entities |
2024-05-15 |
|||
✨ Add sources |
2024-05-14 |
|||
🎨 Fix passing arguments to from_public |
2024-05-13 |
|||
🐛 Fix organism |
2024-05-08 |
|||
🚑️ Fix public_source in inspect |
2024-04-18 |
|||
🐛 Fix syncing public sources |
2024-04-11 |
|||
✨ Add PublicSource.set_as_currently_used |
2024-03-14 |
0.41.4 |
||
✏️ Fix encoding |
2024-01-12 |
0.38.4 |
||
🚑️ Re-encode PublicSource |
2024-01-10 |
0.38.3 |
||
🚚 Rename .bionty to .public |
2024-01-09 |
|||
🚸 Do not create organism when calling bionty |
2024-01-08 |
|||
🚚 Rename |
2023-12-23 |
0.37.0 |
||
🚚 Rename |
2023-12-11 |
0.36.0 |
||
⬆️ Enabled ID conversion via return_field |
2023-12-02 |
|||
🐛 Fix save parents with bionty_source |
2023-11-23 |
|||
✨ Added functions to sync bionty source |
2023-11-16 |
0.35.1 |
||
🚚 Rename FK organism to organisms in BiontySource |
2023-11-13 |
0.35.0 |
||
✨ Add |
2023-10-23 |
0.34.0 |
||
🚚 Rename |
2023-10-19 |
0.33.0 |
||
✏️ Fix uid encoder |
2023-10-18 |
0.32.2 |
||
🚚 Migrate to integer primary keys |
2023-10-13 |
0.32.0 |
||
🔇 Mute repetitive warning for saving parents |
2023-09-20 |
0.31.2 |
||
⬆️ Silence download bar for <5MB files |
2023-09-08 |
0.31.1 |
||
🎨 Return |
2023-09-07 |
0.31.0 |
||
✨ Allow non-default bionty sources in LaminDB |
2023-09-07 |
|||
♻️ Add DB-facing constructor |
2023-08-28 |
0.30.1 |
||
🎨 Make species not nullable in Gene, Protein, CellType |
2023-08-24 |
|||
♻️ Use |
2023-08-23 |
0.30.0 |
||
🚚 Rename map_synonyms to standardize |
2023-08-16 |
0.29.5 |
||
🚚 Rename ORM to Registry |
2023-08-05 |
|||
🎇 Added stable_id to Gene |
2023-07-31 |
0.29.0 |
||
🚚 Rename select to filter |
2023-07-31 |
|||
🎨 Switch biontysource id to hash id |
2023-07-25 |
0.28.2 |
||
🚸 New settings |
2023-07-25 |
0.28.1 |
||
🎨 Link all entities to files and datasets |
2023-07-24 |
0.28.0 |
||
🚚 Replace |
2023-07-24 |
|||
✏️ Fix docstrings |
2023-07-21 |
0.27.4 |
||
🎨 Make species name unique |
2023-07-21 |
|||
🎨 Gene table unique on ensembl id |
2023-07-18 |
0.27.0 |
||
🎨 Fix migration |
2023-07-18 |
|||
🚚 Rename Readout to ExperimentalFactor |
2023-07-17 |
|||
🚸 Trigger instance loading for users |
2023-07-06 |
0.26.2 |
||
⚡️ Speed up parents ingestion |
2023-07-04 |
0.26.1 |
||
🚸 Add settings |
2023-06-30 |
0.25.4 |
||
🚑️ Allow bulk saving parents without causing conflicts |
2023-06-30 |
0.25.2 |
||
✨ Added self-referential |
2023-06-29 |
0.25.0 |
||
♻️ Replaced ln.parse with orm.from_values |
2023-06-27 |
0.24.0 |
||
🚚 Move add_synonym to BaseORM |
2023-06-22 |
0.23.5 |
||
⬆️ Fix synonyms duplication check |
2023-06-22 |
|||
🚑️ Do not check existing synonyms when db table is empty |
2023-06-20 |
|||
🎨 Create multiple records with .from_bionty |
2023-06-20 |
0.23.3 |
||
📈 Save to DB if record already exists for add_synonyms |
2023-06-20 |
0.23.2 |
||
🚚 Fixed all related_names |
2023-06-20 |
0.23.1 |
||
🏷️ Change name to a required field for ontology tables |
2023-06-19 |
0.23.0 |
||
🎨 Consolidate schema, remove non-crucial fields |
2023-06-16 |
0.22.0 |
||
🚚 Rename |
2023-06-10 |
0.21.3 |
||
🚚 Rename Featureset to FeatureSet |
2023-06-10 |
0.21.2 |
||
⏪ Change species uid to 4 char |
2023-06-09 |
0.21.1 |
||
🎨 Change on_delete to PROTECT |
2023-06-09 |
0.21.0 |
||
🎨 Remove unnecessary null=True, blank=True |
2023-06-08 |
0.19a6 |
||
♻️ Simplified species code |
2023-06-08 |
0.19a4 |
||
🚚 Rename BiontyVersions to BiontySources |
2023-06-07 |
0.19a3 |
||
🚚 Migrate |
2023-06-05 |
0.19a1 |
||
✨ Added |
2023-06-02 |
0.18.3 |
||
✨ Add |
2023-06-01 |
|||
🚑 Must pass a species when creating record from lookup |
2023-05-30 |
0.18.2 |
||
✨ Added |
2023-05-30 |
0.18.1 |
||
🚑 Fix created_by_id in Readout |
2023-05-28 |
0.18.0 |
||
🎨 Change .bionty to a method |
2023-05-28 |
|||
🚑 Default species to None and not pass to Bionty |
2023-05-27 |
0.18a6 |
||
🚑 Fix 0.18.0 sqlite migration script |
2023-05-27 |
|||
✨ Add |
2023-05-27 |
0.18a5 |
||
🚑 Fix table name for id_encoder |
2023-05-27 |
|||
⬆️ Update lamindb and bionty versions |
2023-05-27 |
|||
🏷️ Restored Optional type annotation |
2023-05-26 |
|||
🏗️ Remove SQL-level schema modules |
2023-05-25 |
0.18a2 |
||
🚑 Fix last migration |
2023-05-25 |
0.17.1 |
||
🍱 Add CreatedBy and CreatedAt to all entities |
2023-05-25 |
0.17.0 |
||
🚚 Rename bt.Entity to bt.Bionty |
2023-05-25 |
|||
⬆️ Upgrade to bionty 0.13 |
2023-05-09 |
0.16.4 |
||
✨ Added synonyms field to CellMarker |
2023-05-09 |
0.16.3 |
||
💚 Fix dependencies |
2023-04-27 |
0.16.2 |
||
🎨 Move ._entity to private |
2023-04-27 |
0.16.1 |
||
💥 Enable |
2023-04-24 |
0.16.0 |
||
⚡ Fix adding species |
2023-04-19 |
0.15.2 |
||
✨ Add ._entity to knowledge class for features parsing |
2023-04-18 |
0.15.1 |
||
🎨 New design of the knowledge API |
2023-04-17 |
0.15.0 |
||
♻️ Refactor knowledge |
2023-03-28 |
0.14.0 |
||
✨ Added Readout |
2023-03-27 |
0.13.0 |
||
📝 Move knowledge guide from lamindb here |
2023-03-27 |
|||
⬆️ Updated bionty and lamindb deps |
2023-03-27 |
0.12.2 |
||
👷 Upgrade to latest cookiecutter |
2023-03-27 |
|||
🚑 Fix |
2023-03-25 |
0.12.1 |
||
♻️ Switch to class property |
2023-03-24 |
0.12.0 |
||
✨ Expose bionty functions with knowledge decorator |
2023-03-24 |
0.11.0 |
||
🐛 Fix Readout population |
2023-03-23 |
0.10.1 |
||
⬆️ Update CellMarker columns for bionty 0.10 |
2023-03-21 |
0.10.0 |
||
✨ Add CellLine, Pathway, Phenotype |
2023-03-21 |
0.9.0 |
||
💚 Fix CI |
2023-03-21 |
|||
⬆️ Upgrade to bionty 0.9.0 |
2023-03-20 |
0.8.1 |
||
🎨 Allow hashing external IDs |
2023-03-10 |
|||
⬆️ Stable release of bionty 0.8.0 |
2023-03-09 |
0.8.0 |
||
⬆️ Bionty>=0.8rc3 |
2023-03-09 |
0.8rc2 |
||
✨ Use ontology_id as the id for Tissue, CellType, Disease |
2023-03-07 |
0.8.0rc1 |
||
⬆️ Upgrade bionty |
2023-03-06 |
|||
🔥 Remove migration files |
2023-02-14 |
0.7.0 |
||
⬆️ Upgrade and rename |
2023-02-14 |
0.6.9 |
||
🐛 Fixed taxon_id type |
2023-01-17 |
0.6.8 |
||
⬆️ Upgrade dependencies |
2023-01-17 |
0.6.7 |
||
⏪ Revert the last PR |
2023-01-17 |
|||
🐛 Fixed typo for postgres |
2023-01-16 |
0.6.6 |
||
🎨 Change |
2023-01-13 |
|||
👷 Extend CI to py3.8-3.10 |
2023-01-12 |
|||
🚚 Rename |
2023-01-05 |
|||
🐛 Fix migration for sqlite |
2023-01-05 |
0.6.5 |
||
♻️ Treat link tables as in all other schema modules |
2023-01-05 |
0.6.4 |
||
🚚 Move knowledge version tables into module |
2023-01-05 |
0.6.3 |
||
🧪 Added test for ontology autopopulate |
2022-12-09 |
|||
✅ Add migrations test |
2022-12-08 |
|||
✨ Added bionty_version table |
2022-12-07 |
0.6.2 |
||
🎨 Updated bionty_versions |
2022-12-05 |
|||
✨ Added |
2022-11-18 |
0.6.1 |
||
🏗️ Introduce relationships, move Features table to core |
2022-11-17 |
0.6.0 |
||
⚡ Implemented knowledge as a decorator |
2022-11-11 |
0.5.4 |
||
✨ Added populator for ontologies |
2022-11-11 |
|||
♻️ Refactor knowledge population |
2022-11-06 |
|||
🐛 Fixed postgres migration script |
2022-11-06 |
0.5.3 |
||
✨ Use bionty to populate species |
2022-11-06 |
0.5.2 |
||
🐛 Fix prefix |
2022-11-03 |
0.5.1 |
||
🎨 Modularize and capitalize |
2022-11-03 |
0.5.0 |
||
🎨 Updated cell marker id gen |
2022-10-25 |
0.4.5 |
||
✏️ Updated species id to be 3 chars |
2022-10-24 |
0.4.4 |
||
🧑💻 Added naming convention |
2022-10-20 |
|||
🩹 Fix type annotations of primary keys |
2022-09-29 |
0.4.3 |
||
✏️ Changed ids to str |
2022-09-29 |
0.4.2 |
||
🍱 Added |
2022-09-27 |
0.4.1 |
||
🚚 Update primary keys to universal ids |
2022-09-22 |
0.4.0 |
||
🚚 Rename column in version table, add testdb, and migration script |
2022-09-22 |
0.3.1 |
||
✨ Add migrations infra |
2022-09-22 |
0.3.0 |
||
🩹 Added unique constraints |
2022-09-22 |
|||
🐛 Fixed API ref |
2022-09-06 |
0.2.4 |
||
🎨 Import additional modules, species -> species_id |
2022-08-28 |
0.2.3 |
||
🚚 Rename gene_symbol to symbol, protein_name to name |
2022-08-28 |
0.2.2 |
||
⬆️ Update schema to match bionty 0.2.0 |
2022-08-28 |
0.2.1 |
||
🚚 Rename |
2022-08-19 |
0.2.0 |
||
🔧 Add schema module id |
2022-08-18 |
|||
🍱 Updated the gene table to match new ensembl table |
2022-08-18 |
0.1.4 |
||
🎨 Changed type of |
2022-08-15 |
0.1.3 |
||
🚚 Move |
2022-07-31 |
|||
✨ Introduced featureset to replace geneset and proteinset |
2022-07-31 |
0.1.2 |
||
🎨 Changed |
2022-07-23 |
0.1.1 |
||
🚚 Move code from |
2022-07-23 |
0.1.0 |
wetlab¶
Name |
PR |
Developer |
Date |
Version |
---|---|---|---|---|
♻️ Model categoricals via simple |
2024-08-02 |
|||
✨ Improved support for perturbations |
2024-07-29 |
|||
🚚 Rename |
2024-03-08 |
0.27.0 |
nbproject¶
Name |
PR |
Developer |
Date |
Version |
---|---|---|---|---|
⬆️ Upgrade to pydantic v2 |
2024-07-23 |
|||
⚡️ Warn instead of raising the exception when ipylab is not installed |
2024-05-08 |
0.10.3 |
||
♻️ Make ipylab an optional dependency |
2024-05-06 |
|||
🔇 Silence erroneous logging |
2024-02-27 |
0.10.1 |
||
🚸 Init version at 1 |
2024-01-11 |
0.10.0 |