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()returnRecordListand better treat categorical PR @falexwolf๐จ Add
.standardize()toCuratorPR @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-typedCharFieldis 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
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 pathsExample 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_symboltolabel_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 toArtifactsand 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__onQuerySetPR @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 theOverviewandlamin loadon theTransformpage @chaichontat๐ Overhauled
Featurespage @chaichontat๐ A
ULabelspage @adamdev21 PR๐ธ Show only latest versions of versioned entities & add a version drop down to
Artifact&Collectionin analogy toTransform@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 artifactsizeandcounts@chaichontatโจ Support
refSpecUrlinVitessceConfig@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 afterln.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, andlamin 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()fromRecordtoCanValidatePR @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 inMappedCollectionGuide 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 toFalsein previous version if matching onartifact.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 getviakeyoruidPR @falexwolf๐จ Replace direct relation of
CollectiontoFeatureSetwith indirect relation throughArtifactPR @falexwolf๐จ Remove backward relationships for
Run,User&Sourceforeign keys PR PR @falexwolf @sunnyosun๐ Reload in
Transform()upon passing existinguidPR @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 ofCuratorPR @sunnyosun๐ฅ Remove
lamin registerand password argument oflamin 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 ofrevises๐ 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")fortiledbsomaarray 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-dependentCharField.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.parentstoTransform.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_oftoinput_of_runs๐จ
Transform.latest_reportis now a property point toTransform.latest_run.reportto simplify the schema๐จ
Artifact.typenow defaults toNonewhen passing apathso that auxiliary files and folders arenโt labeled asdataset
๐ธ Better definition of
Collection๐ Rename fields
.artifactto.meta_artifactand.unordered_artifactsto.artifactsIteration over an ordered
QuerySetof artifacts is now possible via.ordered_artifactsFor collections that have a single data artifact, access it via
.data_artifact
๐๏ธ Towards searchable source code
๐ Rename
Transform.source_codetoTransform._source_code_artifactRe-introduce
Transform.source_codeas 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_uidduringinit_instancePR @falexwolf
Various updates.
2024-08-03 bionty 0.47ยถ
๐๏ธ Bionty is now a single Python package. PR PR PR PR PR
๐๏ธ
lnschema-biontyandbionty-baseare 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
biontyinstead of thelnschema_biontyapps
๐ธ You can now import from in-house ontology sources. PR @sunnyosun
๐ Rename
PublicSourcetoSource&from_publictofrom_sourceImport 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 withorganismPR 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 toBioRecordPR @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 ofArtifact.open()PR @Koncopd๐ Deprecate
Annotatein favor ofCuratePR @falexwolf๐ Deprecate
Registryin favor ofRecordPR @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 aStorageSettingsobject (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
typefield 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_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 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()returnsrunPR @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 haveCellTyperecord outputsCode is simpler through inheritance from two new base classes:
TracksRunandTracksUpdates
โป๏ธ Briefer and richer syntax for denoting feature types, renamed
Feature.typetoFeature.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 aFeatureValueregistryTrack arbitrary typed parameters for runs through a
Paramregistry analogous to theFeatureregistry: this replaces the hard-to-validate, hard-to-migrate, and hard-to-queryjsonfield ofRun
๐๏ธ Refactor link models PR PR @falexwolf
All annotation-related links are now stratified by
Feature: what held forULabelnow also holdsCellTypeand all otherBiontyregistriesIndicate 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 ofulabels.artifactulabel_setDropped linking
Biontyentities directly againstCollectionPruned & 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_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 flagi_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 ofcache()PR @falexwolf
2024-04-12 db 0.69.10ยถ
โจ Add
.obsmand.layerstoMappedCollectionand renamelabel_keystoobs_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()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_dfandAnnotate.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 asrun.finished_at, renamerun.run_attorun.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_versionfilter forQuerySetPR @falexwolf๐ Rename
transform.short_nametotransform.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_lamin1towetlabPR @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 trackPR @falexwolf๐
lamin stagerespects new URL design PR @falexwolf๐ Rename
.devto.corePR @falexwolf
2024-02-02 db 0.67.3ยถ
๐ธ Can now import
biontyinstead oflnschema-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
innerandouterjoin inCollection.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
DatasettoCollectionPR1377 @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 ofinitial_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 |