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 git repositories: lamindb, laminhub, laminr, and bionty.
2024-12-01 db 0.77.3ยถ
- ๐จ Better names for sections in - .describe()PR1 PR2 @sunnyosun
- ๐ธ Improve feedback on not-up-to-date notebook content PR @falexwolf 
- ๐ Fix - curator.validate()from public PR @sunnyosun
- ๐ Fix very long runtimes for Artifact.describe PR @Koncopd 
- ๐ Fix organism in curator.standardize PR @sunnyosun 
- ๐ Better error behavior for repeated calls of - standardizePR @Zethson
- ๐ Fix the error on special chars in search strings PR @Koncopd 
- ๐ Fix display of (non-categorical) - strfeatures in- .describe()PR @sunnyosun
- ๐ Fix the error on existing cache on copy to cache in - Artifact.save()PR @Koncopd
2024-12-02 R 0.3.0ยถ
2024-12-01 db 0.77.2ยถ
- ๐ธ A more intuitive - artifact.describe()PR @sunnyosun
- โจ Enable to easily join features onto artifacts via - Artifact.df()PR @falexwolf
- โจ Support features with - dtype = 'str'PR @falexwolf
- โจ Support features with - dtype = 'datetime'and improve feature values handling PR @falexwolf
- ๐จ Let - .from_values()return- RecordListand better treat categorical PR @falexwolf
- ๐จ Add - .standardize()to- CuratorPR @sunnyosun
- ๐จ Make search in - bionty.baseconsistent with lamindb PR @Koncopd
2024-11-25 hub 0.31ยถ
๐ธ Improve speed and relevance search. Make search consistent with lamindb 0.77. PR @Koncopd @fredericenard
Details
Since lamindb 0.77 and laminhub 0.31 search isnโt fuzzy anymore. This leads to much more predictable and relevant results similar to what users know from GitHub, Slack and similar tools.
Search results for lamindb and bionty are now exemplified here faq/search.
More changes.
- โก Faster loading speed on launch @awgaan 
- ๐ Fixed incorrect sorting in the version selector @chaichontat 
2024-11-21 R 0.2.0ยถ
โจ Read and write data with LaminR, an R client for LaminDB. PR @rcannood @lazappi
install.packages("laminr", dependencies = TRUE)  # install the laminr package from CRAN
library(laminr)
db <- connect()  # connect to the instance you configured on the terminal
db$track(path = "./my-analysis.Rmd")  # track a run of your notebook or script
artifact <- db$Artifact$get("3TNCsZZcnIBv2WGb0001")  # get an artifact record by uid
df <- artifact$load() # load the artifact into memory, e.g., a DataFrame
# do your work
db$Artifact.from_path("./my_result_folder", description="My result").save()  # save a folder
db$finish()  # mark the run finished
2024-11-21 db 0.77.0 | bionty 0.53ยถ
โจ Enable validation of Literal and other field types. PR @sunnyosun
- A - Literal-typed- CharFieldis validated for any- Record:- 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 
- For custom field types, use Djangoโs rich field validation and subclass - ValidateFields:- from lnschema_core import Record, ValidateFields from django.core.validators import RegexValidator class Reference(Record, ValidateFields): url: str = fields.URLField() 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)", ) ], ) 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. - More concise registry definitions: lnschema-core findrefs ourprojects clinicore cellregistry @sunnyosun 
- Squash migrations for faster instance creation: lnschema-core bionty wetlab @sunnyosun 
 
๐ฑ Overhauled Nextflow integration. PR @Zethson
- The registration script now leverages standardized - nf-coremetadata paths
- Example use case is now more comprehensive and based on - nf-core/scrnaseq
Other enhancements.
- ๐ธ Mark - .qmd&- .Rmdfiles as notebooks, not scripts PR @falexwolf
- ๐ธ Suppress hf filesystem warning due to not being explicitly implemented in upath PR @Koncopd 
2024-11-15 db 0.76.16ยถ
New features.
- โจ Support saving R code including - .qmdand- .RmdPR @falexwolf
- โจ Support registering artifacts on Hugging Face PR @Koncopd 
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 
- ๐ธ Add - pip installextras for all schema modules PR @Zethson
Fixes.
- ๐ Fix transfering artifacts from a source instance with fewer schema modules PR @sunnyosun 
- ๐ Fix registering Gene columns in - DataFrameCuratorPR @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ยถ
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_fromand 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_symbolto- label_ref_is_namePR @falexwolf
- ๐จ Remove update in - add_ontology_from_df()PR @sunnyosun
Fixes.
- ๐ Fix loading artifact by key and give clear errors if no artifacts or transforms found PR @Koncopd 
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_byfiltering 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 - Datatab to- Artifactsand 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 initcalls 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__on- QuerySetPR @sunnyosun
- ๐ Do not double track runs PR @falexwolf 
2024-10-08 db 0.76.12 | bionty 0.51ยถ
- โจ Overhaul - save_vitessce_config()to support multiple artifacts and non-- .zarrPR @keller-mark
- ๐ธ Query with typed labels through - .featuresPR @falexwolf
- ๐ Document how to query by dictionary-like run parameters PR @falexwolf 
- ๐ Fix - lamin load ... --with-envacross servers PR @Koncopd
2024-10-02 hub 0.28ยถ
Major improvements.
- โจ SSO login + new API key @fredericenard @Koncopd @chaichontat @sunnyosun 
- ๐ Display - lamin connecton the- Overviewand- lamin loadon the- Transformpage @chaichontat
- ๐ Overhauled - Featurespage @chaichontat
- ๐ A - ULabelspage @adamdev21 PR
- ๐ธ Show only latest versions of versioned entities & add a version drop down to - Artifact&- Collectionin analogy to- Transform@adamdev21 @chaichontat PR
- ๐ Hover card for - ULabelannotations @adamdev21
- โจ Overhauled - Settingspage and enable to change handle & name @chaichontat
Minor changes.
- ๐ Fix - ulabelfiltering 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 - keyas a download name for a transform @sunnyosun
- ๐ธ Only show linked labels in filters @adamdev21 
- ๐ Order transforms & runs by - created_at@sunnyosun
- ๐ On - Overviewpage, show data formats, feature sets, and artifact- sizeand- counts@chaichontat
- โจ Support - refSpecUrlin- VitessceConfig@sunnyosun
2024-10-01 db 0.76.11ยถ
- โจ Add a reference manager schema module: - findrefsPR @falexwolf
- ๐ Fix label name display in - .describe()PR @falexwolf
- ๐ Fix permission error when saving a new artifact on python 3.12 PR @Koncopd 
- ๐ Strip - NotebookNotSavederror from report after- ln.finish()PR @Koncopd
2024-09-30 db 0.76.10ยถ
- ๐ธ Re-worked the CLI: - lamin loadโ- lamin connect&- lamin getโ- lamin loadPR @Koncopd @apโ
- โก Improve performance of - ln.connect(),- lamin connect, and- lamin loadfor a notebook PR @falexwolf
- โก๏ธ Speed up curation workflows through - from_valuesPR @sunnyosun
- ๐ธ Improve - lamin loadUX for notebooks & scripts PR @falexwolf
- ๐ธ Transfer: Warn about inconsistencies between source & target instances PR @falexwolf 
- ๐จ Move - .from_values()from- Recordto- CanValidatePR @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 loadfrom on-prem domains PR @falexwolf
2024-09-26 db 0.76.9ยถ
- โจ Allow filtering - .obsindices in- MappedCollectionGuide 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_latestis set to- Falsein previous version if matching on- artifact.keyPR @falexwolf
- โจ Store artifacts under their virtual keys in cache PR @Koncopd 
2024-09-18 db 0.76.7 | bionty 0.50ยถ
- โจ 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 getvia- keyor- uidPR @falexwolf
- ๐จ Replace direct relation of - Collectionto- FeatureSetwith indirect relation through- ArtifactPR @falexwolf
- ๐จ Remove backward relationships for - Run,- User&- Sourceforeign keys PR PR @falexwolf @sunnyosun
- ๐ Reload in - Transform()upon passing existing- uidPR @falexwolf
2024-09-05 db 0.76.5ยถ
- ๐ Fix - lamin savefor 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_latestPR @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 - Curatein favor of- CuratorPR @sunnyosun
- ๐ฅ Remove - lamin registerand password argument of- lamin loginPR 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_ofargument in favor of- revises
- ๐ Deprecate passing - versionto constructors; rather set- .versionafter 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_latestto speed up queries for latest versions PR @falexwolf @fredericenard @chaichontat
- ๐ Fix length limitation for external hash parsing PR @falexwolf 
- โก๏ธ Speed up - BioRecord.import_from_sourcePR @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.CuratePR PR @sunnyosun
- โจ Allow excluding values in - Curate.validatePR @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")for- tiledbsomaarray 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.Literalinstead of Djangoโs migration-dependent- CharField.choices
- ๐ธ Less clutter in auto-complete - ๐ All fields pointing to link records start with - links_
- ๐ Several fields for - Artifactare now private via- _prefix:- accessor,- key_is_virtual,- feature_values,- param_values,- hash_type,- previous_runs
 
- ๐จ More consistency - ๐ Rename - Transform.parentsto- Transform.predecessorsto 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_ofto- input_of_runs
- ๐จ - Transform.latest_reportis now a property point to- Transform.latest_run.reportto simplify the schema
- ๐จ - Artifact.typenow defaults to- Nonewhen passing a- pathso that auxiliary files and folders arenโt labeled as- dataset
 
- ๐ธ Better definition of - Collection- ๐ Rename fields - .artifactto- .meta_artifactand- .unordered_artifactsto- .artifacts
- Iteration over an ordered - QuerySetof 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_codeto- Transform._source_code_artifact
- Re-introduce - Transform.source_codeas a text field together with a field- hash
 
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_uidduring- init_instancePR @falexwolf
Various updates.
2024-08-03 bionty 0.47ยถ
๐๏ธ Bionty is now a single Python package. PR PR PR PR PR
- ๐๏ธ - lnschema-biontyand- bionty-baseare integrated into- bionty
- ๐ธ 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 of- lnschema_bionty_
- On the Django level, you can mount the - biontyinstead of the- lnschema_biontyapps
๐ธ You can now import from in-house ontology sources. PR @sunnyosun
- ๐ Rename - PublicSourceto- Source&- from_publicto- from_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_idfield recognition
- โจ Better error message for synonym duplications PR @Zethson 
- ๐จ - CellMarker.nameis now unique together with- organismPR 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_dfmethod to- BioRecordPR @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-apisetting PR @falexwolf
- ๐ท๏ธ Add types to fields PR @falexwolf 
tiledbsoma is now better supported.
Better names.
- ๐ Deprecate - Artifact.backed()in favor of- Artifact.open()PR @Koncopd
- ๐ Deprecate - Annotatein favor of- CuratePR @falexwolf
- ๐ Deprecate - Registryin favor of- RecordPR @falexwolf
Better documentation.
- ๐ Improve the curation guide PR PR @sunnyosun @falexwolf 
- ๐ Improve the CLI docs PR @falexwolf 
Security updates & bug fixes.
- ๐ Enable Ruff security rules (bandit) & CodeQL PR @Zethson 
- ๐ 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-localPR @chaichontat @sunnyosun
- โจ New endpoint: - create-instancePR @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.storagereturns a- StorageSettingsobject (root via- ln.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 leverage- artifact.features.add_values()to annotate dataset-like artifacts
- ๐๏ธ Add - typefield to- Artifact, 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_runsand- .runPR @falexwolf
2024-06-05 db 0.73.1ยถ
- ๐๏ธ Instantly synchronize instance schema with the hub PR @fredericenard 
- ๐ Fix generation of - uidfor manual Transform constructor PR @falexwolf
- ๐ฅ Deleting - artifact.stage()in favor of- artifact.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()returns- runPR @falexwolf
- ๐ธ Better duplicate detection and search PR @falexwolf 
- ๐ธ Prettier - .describe()PR @falexwolf
- ๐ธ More interactivity in - lamin savePR @falexwolf
- ๐ธ - createflag 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 have- CellTyperecord outputs
- Code is simpler through inheritance from two new base classes: - TracksRunand- TracksUpdates
 
- โป๏ธ Briefer and richer syntax for denoting feature types, renamed - Feature.typeto- Feature.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 a- FeatureValueregistry
- Track arbitrary typed parameters for runs through a - Paramregistry analogous to the- Featureregistry: this replaces the hard-to-validate, hard-to-migrate, and hard-to-query- jsonfield of- Run
 
- ๐๏ธ Refactor link models PR PR @falexwolf - All annotation-related links are now stratified by - Feature: what held for- ULabelnow also holds- CellTypeand all other- Biontyregistries
- Indicate 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_linksinstead of- ulabels.artifactulabel_set
- Dropped linking - Biontyentities directly against- Collection
- 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 upon- ln.track()PR @falexwolf
- ๐จ Make - features.add_feature_setpublic PR @sunnyosun
- ๐จ Use the same - uidfor 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 
- ๐ธ Proper progress bars for upload and download PR @Koncopd 
- ๐ธ Make save return self PR @falexwolf 
2024-04-24 db 0.70.4ยถ
- โจ Allow passing path to - .from_anndataPR @sunnyosun
- ๐ธ In - .setup.delete(), check for data deletion & delete from hub PR @falexwolf
- โก๏ธ Speed up - latest_versionPR @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 - VitessceConfigfrom its referenced artifacts PR @falexwolf
- ๐ธ In - ln.finish(), remove flag- i_saved_the_notebookPR @falexwolf
2024-04-18 db 0.70.1ยถ
- ๐ Fix - public_sourcein 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.ulabelsPR @falexwolf
- ๐ Deprecate - stage()in favor of- cache()PR @falexwolf
2024-04-12 db 0.69.10ยถ
- โจ Add - .obsmand- .layersto- MappedCollectionand rename- label_keysto- obs_keysPR @Koncopd
- ๐ธ Eliminate kwargs PR @sunnyosun 
- โจ Introduce - Annotate.from_mudataPR @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()and- lamin get(replaces- lamin 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_dfand- Annotate.from_anndataPR 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 as- run.finished_at, rename- run.run_atto- run.started_at, upload notebooks during- ln.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_versionfilter for- QuerySetPR @falexwolf
- ๐ Rename - transform.short_nameto- transform.keyPR @falexwolf
- โป๏ธ Add a JSON field to - RunPR @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_lamin1to- wetlabPR @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()without- lamin trackPR @falexwolf
- ๐ - lamin stagerespects new URL design PR @falexwolf
- ๐ Rename - .devto- .corePR @falexwolf
2024-02-02 db 0.67.3ยถ
- ๐ธ Can now import - biontyinstead of- lnschema-biontyPR @sunnyosun
- โป๏ธ Use Click for CLI PR @chaichontat 
- ๐จ Make - Collection.save()ACID PR @falexwolf
- โจ Add - add_to_version_familyPR @sunnyosun
- ๐ Transfer - collection.artifactsPR @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 - .biontyto- .public,- .from_biontyto- .from_publicPR @sunnyosun
2024-01-09 db 0.66.1ยถ
- ๐ Fix id matching in view_lineage PR @sunnyosun 
- โป๏ธ Incorporate edge cases in - innerand- outerjoin in- Collection.mappedPR @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 - Datasetto- CollectionPR1377 @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_uidinstead of- initial_version_idand replace- __lamindb_uid_prefix__with- __transform_stem_uid__PR1369 PR1375 PR1373 @bpenteado @falexwolf
- ๐จ Name - .lndbfiles 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 | 
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 |