## Changelog 2024

Note:

 Get notified by watching releases for git repositories: lamindb ·
  laminhub · lamin-cli · laminr · nf-lamin · bionty For other years,
  see: 2026 · 2025 · 2023 · 2022

# 2024-12-16 db 0.77.3

* ✨ Add "Curator.from_tiledbsoma()" PR @Koncopd

* ✨ Add an artifact loader for ".yaml" PR @Koncopd

* 🎨 Better names for sections in ".describe()" PR1 PR2 @sunnyosun

* 🚸 Improve feedback on not-up-to-date notebook content PR @falexwolf

* 🚸 Log tiledbsoma target path PR @Koncopd

* 🐛 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 "standardize" PR
  @Zethson

* 🐛 Fix the error on special chars in search strings PR @Koncopd

* 🐛 Fix display of (non-categorical) "str" features in ".describe()"
  PR @sunnyosun

* 🐛 Fix IPython import error PR @Koncopd

* 🐛 Fix the error on existing cache on copy to cache in
  "Artifact.save()" PR @Koncopd

* ⬆️ Exclude s3fs==2024.10.0 PR @Koncopd

* ⬆️ Unpin supabase PR @Koncopd

# 2024-12-02 R 0.3.0

* ✨ Add "Artifact$open()" to stream array-like artifacts PR @lazappi

* ✨ Track artifacts as inputs PR @lazappi

* ✨ Allow connecting to private LaminDB instances PR @rcannood

* 🚸 Improve UX of "db$track()" and "db$finish()" PR @lazappi
  @falexwolf

# 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 "RecordList" and better treat
  categorical PR @falexwolf

* 🎨 Add ".standardize()" to "Curator" PR @sunnyosun

* 🎨 Make search in "bionty.base" consistent 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 "CharField" is 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-core"
  metadata paths

* Example use case is now more comprehensive and based on "nf-
  core/scrnaseq"

Other enhancements.

* 🚸 Mark ".qmd" & ".Rmd" files 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 ".qmd" and ".Rmd" PR @falexwolf

* ✨ Support registering artifacts on Hugging Face PR @Koncopd

Other enhancements.

* 📝 Add guide on gene symbol mapping *Guide* PR @Zethson

* 🚸 Improve speed and relevance search PR @Koncopd

* 🚸 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

* 🎨 Make "EHRCurator" immutable PR @Zethson

* 🚸 Warn if curating against gene symbols PR @Zethson

* 🚸 Better logging during curation PR PR @Zethson

* 🚸 Add "pip install" extras 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 "DataFrameCurator" PR @sunnyosun

Deprecations.

* 🚚 Deprecate "import_from_source" in favor of "import_source" PR
  @Zethson

# 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:

* 🚸 Simplify "Curator" logging and error behavior PR1 PR2 PR3
  @sunnyosun @Zethson

* 🚸 Set "anon" for public S3 buckets if AWS credentials fail PR
  @Koncopd

* 👷 Run tests on Python 3.12 PR @Zethson

# 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

* ✨ Add "Collection.append()" PR @Koncopd

User experience.

* 🚸 Document how to subclass "Curator" PR @Zethson

* 🚸 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" to
  "label_ref_is_name" PR @falexwolf

* 🎨 Remove update in "add_ontology_from_df()" PR @sunnyosun

Fixes.

* 🐛 Fix tracking of notebooks on PyCharm PR @Koncopd

* 🐛 Fix loading artifact by key and give clear errors if no artifacts
  or transforms found PR @Koncopd

Deprecations.

* 🔊 Deprecate login with "--key" PR @Koncopd

# 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 to "Artifacts" 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__" on "QuerySet" PR @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-".zarr" PR @keller-mark

* 🚸 Query with typed labels through ".features" PR @falexwolf

* 📝 Document how to query by dictionary-like run parameters PR
  @falexwolf

* 🍱 New "ExperimentalFactor" version: efo-3.70.0 PR @Zethson

* 🐛 Fix "lamin load ... --with-env" across servers PR @Koncopd

# 2024-10-02 hub 0.28

Major improvements.

* ✨ SSO login + new API key @fredericenard @Koncopd @chaichontat
  @sunnyosun

* 💄 Display "lamin connect" on the "Overview" and "lamin load" on the
  "Transform" 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 to "Transform"
  @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 artifact
  "size" and "counts" @chaichontat

* ✨ Support "refSpecUrl" in "VitessceConfig" @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 after "ln.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", and
  "lamin 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()" from "Record" to "CanValidate" 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 in "MappedCollection" PR @Koncopd

* 📝 Document notebook templates PR @falexwolf

* 🍱 Use case for curating perturbations PR @Zethson

-[ 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 to "False" in previous version if
  matching on "artifact.key" PR @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

* 🚸 Add parameter validation in bionty PR @Zethson

-[ Technical changes ]-

* 🔊 More logging for "import_from_source" PR @sunnyosun

* 🔊 Warn instead of hint about missed input tracking PR @Koncopd

* ✨ Add "n_observations" to "tiledbsoma"-like artifacts PR @Koncopd

* 🎨 Remove "stream" argument from "artifact.load()" PR @Koncopd

-[ Ontology versions ]-

* 🍱 New Tissue version: uberon-2024-03-22 PR @Zethson

* 🍱 New Disease version: mondo-2024-05-08 PR @Zethson

* 🍱 New ExperimentalFactor version: efo-3.65.0 PR @Zethson

* 🍱 New CellType version: cl-2024-04-05 PR @Zethson

-[ Use case changes ]-

* ✨ Add support for cellxgene-schema 5.1.0 PR @Zethson

* 📝 Integrate cellxgene guides and add data loader examples PR
  @Koncopd

* 📝 Track all AnnData inputs in "scrna-tiledbsoma" PR @Koncopd

# 2024-09-09 db 0.76.6 | bionty 0.50

* ✨ Enable negations in "filter()" PR @falexwolf

* ✨ "lamin get" via "key" or "uid" PR @falexwolf

* 🎨 Replace direct relation of "Collection" to "FeatureSet" with
  indirect relation through "Artifact" PR @falexwolf

* 🎨 Remove backward relationships for "Run", "User" & "Source"
  foreign keys PR PR @falexwolf @sunnyosun

* 🐛 Reload in "Transform()" upon passing existing "uid" PR @falexwolf

# 2024-09-05 db 0.76.5

* ✨ Allow hooking into entry points PR @ap--

* 🐛 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.

* 🍱 Add chebi & chembl PR @Zethson

* 🍱 Add additional relationship types & update "DevelopmentalStage"
  and "Tissue" PR @Zethson

* 🍱 New "CellLine" version: "depmap-2024-Q2" PR @Zethson

More changes.

* 🚚 Deprecate "Curate" in favor of "Curator" PR @sunnyosun

* 🔥 Remove "lamin register" and password argument of "lamin 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 of "revises"

* 🚚 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:

* 🚸 Update ".get()" to accept expressions so that it can replace
  ".filter(...).one()" PR @falexwolf

* ✨ "MappedCollection" compatible with latest "scdataloader" PR
  @Koncopd PR @jkobject

# 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

* 📝 Refactor curation guide PR @Zethson

# 2024-08-08 bionty 0.48

New ontology versions.

* 🍱 New "Tissue" version: "uberon-2024-05-13" PR @Zethson

* 🍱 New "Tissue" version: "uberon-2024-01-18" PR @Zethson

* 🍱 New "Phenotype" version: "zp-2024-04-18" PR @Zethson

* 🍱 New "Phenotype" version: "pato-2024-03-28" PR @Zethson

* 🍱 New "Phenotype" version: "mp-2024-06-18" PR @Zethson

* 🍱 New "Phenotype" version: "hp-2024-04-26" PR @Zethson

* 🍱 New "Pathway" version: "pw-7.84" PR @Zethson

* 🍱 New "Pathway" version: "go-2024-06-17" PR @Zethson

* 🍱 New "Disease" version: "mondo-2024-06-04" PR @Zethson

* 🍱 New "Disease" version: "doid-2024-05-29" PR @Zethson

* 🍱 New "Disease" version: "mondo-2024-01-03" PR @Zethson

* 🍱 New "ExperimentalFactor" version: "efo-3.66.0" PR @Zethson

* 🍱 New "ExperimentalFactor" version: "efo-3.62.0" PR @Zethson

* 🍱 New "Drug" version: "dron-2024-08-05" PR @Zethson

* 🍱 New "CellType" version: "cl-2024-05-15" PR @Zethson

* 🍱 New "CellType" version: "cl-2024-01-04" PR @Zethson

# 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
  "tiledbsoma" 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-dependent
  "CharField.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" to "Transform.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" to "input_of_runs"

  * 🎨 "Transform.latest_report" is now a property point to
 "Transform.latest_run.report" to simplify the schema

  * 🎨 "Artifact.type" now defaults to "None" when passing a "path" so
 that auxiliary files and folders aren't labeled as "dataset"

* 🚸 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" to
 "Transform._source_code_artifact"

  * Re-introduce "Transform.source_code" as 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_uid" during "init_instance" PR
  @falexwolf

Various updates.

* 👷 Add a contributing guide, make installation from GitHub easier PR
  PR @Zethson @falexwolf

* "lamin --help" now shows a custom command order PR @Zethson

# 2024-08-03 bionty 0.47

🏗️ Bionty is now a single Python package. PR

* 🏗️ "lnschema-bionty" and "bionty-base" are integrated into "bionty"

* 🚸 Considerably simpler UX

⚠️ Migration: Once you connect to 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 "bionty" instead of the
  "lnschema_bionty" apps

🚸 You can now import from in-house ontology sources. PR @sunnyosun

* 🚚 Rename "PublicSource" to "Source" & "from_public" to
  "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_id" field recognition

* ✨ Better error message for synonym duplications PR @Zethson

* 🚚 All link model fields start with "links_" PR falexwolf

* 🎨 "CellMarker.name" is now unique together with "organism" PR
  sunnyosun

New ontologies.

* ✨ Add ICD ontology for "Disease" PR PR Zethson

* 🍱 New "Protein" version: "uniprot-2024-03" PR sunnyosun

* 🍱 New "Gene" version: "ensembl-111/112" PR Zethson

* 🍱 New "ExperimentalFactor" version: "efo-3.63" PR Zethson

* 🍱 New "CellType" version: "cl-2024-02-13" PR Zethson

* 🍱 New "Tissue" version: "uberon-2024-02-20" PR Zethson

* 🍱 New "Organism" version: "ensembl-release-111" & "ensembl-
  release-112" PR sunnyosun

* 🍱 New "Disease" version: "mondo-2024-02-06" PR Zethson

* 🍱 New "Disease" version: "DOID-2024-01-31" PR Zethson

* 🍱 New "Phenotype" version: "hp-2024-03-06" PR Zethson

* 🍱 New "Phenotype" version: "mp-2024-02-07" PR Zethson

* 🍱 New "Phenotype" version: "zp-2024-01-22" PR Zethson

* 🍱 New "Pathway" version: "pw-7.82" PR Zethson

* 🍱 New "Drug" version: "DRON-2024-03-02" PR Zethson

# 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 to "BioRecord" PR @sunnyosun

Chores.

* ⬆️ Upgrade to pydantic v2 PR @falexwolf

* 👷 Resolve hanging CI PR @Koncopd

# 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.

* ✨ "Artifact.open()" for "tiledbsoma" stores PR @Koncopd

Better names.

* 🚚 Deprecate "Artifact.backed()" in favor of "Artifact.open()" PR
  @Koncopd

* 🚚 Deprecate "Annotate" in favor of "Curate" PR @falexwolf

* 🚚 Deprecate "Registry" in favor of "Record" PR @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-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 a "StorageSettings" object (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 "type" field to "Artifact", allow linking model-like
  artifacts against params, validate params akin to validating
  features, enable features-based annotation with non-ulabels PR
  @falexwolf

* 🚸 Support dict in "add_values" PR @Zethson

♻️ Refactor after upath upgrade. PR PR @Koncopd

# 2024-06-13 db 0.73.2

* 🐛 Fix clashing reverse accessors for ".previous_runs" and ".run" PR
  @falexwolf

* 🐛 Import IPython inside view PR @Koncopd

# 2024-06-05 db 0.73.1

* 🏗️ Instantly synchronize instance schema with the hub PR
  @fredericenard

* ⬆️ Upgrade "universal_pathlib" to 0.2.2 PR @Koncopd

* 🐛 Fix generation of "uid" for 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 "run" 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
 have "CellType" record outputs

  * Code is simpler through inheritance from two new base classes:
 "TracksRun" and "TracksUpdates"

* ♻️ Briefer and richer syntax for denoting feature types, renamed
  "Feature.type" to "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 "FeatureValue"
 registry

  * Track arbitrary typed parameters for runs through a "Param"
 registry analogous to the "Feature" registry: this replaces the
 hard-to-validate, hard-to-migrate, and hard-to-query "json" field
 of "Run"

* 🏗️ Refactor link models PR PR @falexwolf

  * All annotation-related links are now stratified by "Feature": what
 held for "ULabel" now also holds "CellType" and all other "Bionty"
 registries

  * 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_links" instead of "ulabels.artifactulabel_set"

  * Dropped linking "Bionty" entities 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

* ⚡️ Parallel hashing of directories PR @Koncopd

* ⚡️ Speed-up file hash PR @Koncopd

* ♻️ 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_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

* ⚡️ Zarr and cache improvements PR @Koncopd

* ♻️ 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 & introduce
  "keep_artifacts_local" PR @falexwolf

| * 🚚 Add an "instance_uid" field to "Storage" | 374 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_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 flag "i_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 of "cache()" PR @falexwolf

# 2024-04-12 db 0.69.10

* ✨ Add ".obsm" and ".layers" to "MappedCollection" and rename
  "label_keys" to "obs_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

* ♻️ Use future annotations PR @Zethson

# 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_df" and
  "Annotate.from_anndata" PR 1 2 3 @sunnyosun

# 2024-03-26 db 0.69.2

* ✨ Stage collections PR @Koncopd

* ✨ Improve functionality for folder-like artifacts PR @Koncopd

* 📝 Improve the introduction page PR PR @sunnyosun @Zethson

# 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_at" to "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_version" filter for "QuerySet" PR @falexwolf

* 🚚 Rename "transform.short_name" to "transform.key" PR @falexwolf

* 🚸 Return "storage_idx" in "MappedCollection" PR @Koncopd

* ♻️ 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" to "wetlab" 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.ulabels.add(labels)

* 🚸 Can now use "ln.track()" without "lamin track" PR @falexwolf

* 🐛 "lamin stage" respects new URL design PR @falexwolf

* 🚚 Rename ".dev" to ".core" PR @falexwolf

* ♻️ Improved "MappedCollection" PR PR @Koncopd

# 2024-02-02 db 0.67.3

* 🚸 Can now import "bionty" instead of "lnschema-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

* ♻️ Fix connection time outs PR @Koncopd

* ♻️ Incorporate edge cases in "inner" and "outer" join in
  "Collection.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" to "Collection" 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 of "initial_version_id" and
  replace "__lamindb_uid_prefix__" with "__transform_stem_uid__"
  PR1369 PR1375 PR1373 @bpenteado @falexwolf

* 🎨 Name ".lndb" files by instance id PR1372 @falexwolf

# lnschema-core

| --- | --- | --- | --- | --- |
| Name | PR | Developer | Date | Version |
| ====================== | ====================== | ====================== | ====================== | ====================== |
| 📝 Update types of | 397 | Koncopd | 2024-07-15 |
| backed returns |
| --- | --- | --- | --- | --- |
| 🚸  Cleaner API | 396 | falexwolf | 2024-07-15 |
| --- | --- | --- | --- | --- |
| 🏷️ Add types to core | 394 | falexwolf | 2024-07-01 |
| fields |
| --- | --- | --- | --- | --- |
| 📝 Better docstrings | 393 | falexwolf | 2024-07-01 |
| --- | --- | --- | --- | --- |
| 🚸 Added support for | 392 | insavchuk | 2024-06-26 | 0.70.1 |
| different join types |
| in QuerySet.df() |
| --- | --- | --- | --- | --- |
| 🚚 Add type field to | 390 | falexwolf | 2024-06-19 | 0.70.0 |
| Artifact, and allow |
| linking artifacts |
| against params |
| --- | --- | --- | --- | --- |
| 🐛 Fix clashing | 391 | falexwolf | 2024-06-13 | 0.69.0 |
| reverse accessors |
| between |
| ".previous_runs" and |
| ".run" |
| --- | --- | --- | --- | --- |
| ♻️ Add constraints & | 388 | falexwolf | 2024-05-29 | 0.68.0 |
| simple schema fixes |
| --- | --- | --- | --- | --- |
| ♻️ Migrate | 387 | falexwolf | 2024-05-29 |
| featuremanager to |
| being available on |
| the class level |
| --- | --- | --- | --- | --- |
| ♻️ Better | 386 | falexwolf | 2024-05-25 |
| representation |
| --- | --- | --- | --- | --- |
| 🚚 Reformulate data | 385 | falexwolf | 2024-05-19 | 0.67.0 |
| lineage, remove json |
| field from run |
| --- | --- | --- | --- | --- |
| ♻️ Protect feature | 384 | falexwolf | 2024-05-18 |
| in FeatureSet |
| --- | --- | --- | --- | --- |
| 🏗️ Naming | 383 | falexwolf | 2024-05-18 |
| conventions for link |
| tables, protecting |
| deletion in link |
| tables, maintaining |
| integrity upon label |
| & feature renames |
| --- | --- | --- | --- | --- |
| 🚚 Rename ".type" to | 382 | falexwolf | 2024-05-17 |
| ".dtype" for |
| "Feature" and |
| "FeatureSet" |
| --- | --- | --- | --- | --- |
| 🔥 Prune migrations | 381 | falexwolf | 2024-05-16 |
| --- | --- | --- | --- | --- |
| 🔥 Delete old | 380 | falexwolf | 2024-05-16 |
| migrations and |
| create a new |
| squashed initial |
| migration |
| --- | --- | --- | --- | --- |
| ✨ Add | 379 | falexwolf | 2024-05-15 |
| "FeatureValue" and |
| "ParamValue" |
| --- | --- | --- | --- | --- |
| Add using docstring | 378 | Zethson | 2024-05-07 |
| --- | --- | --- | --- | --- |
| ♻️ Move "version" | 377 | falexwolf | 2024-05-07 |
| field into |
| "IsVersioned" base |
| model |
| --- | --- | --- | --- | --- |
| 📝 Better examples | 375 | sunnyosun | 2024-05-06 |
| for FeatureSet |
| --- | --- | --- | --- | --- |
| ✨ Add an | 374 | falexwolf | 2024-04-28 | 0.66.0 |
| "instance_uid" field |
| to Storage |
| --- | --- | --- | --- | --- |
| ✨ Allow passing | 373 | sunnyosun | 2024-04-23 |
| path to |
| .from_anndata |
| --- | --- | --- | --- | --- |
| 🚑️ Fix | 372 | sunnyosun | 2024-04-18 |
| public_source in |
| inspect |
| --- | --- | --- | --- | --- |
| 🐛 Fix replicated | 371 | falexwolf | 2024-04-17 | 0.65.0 |
| outputs slot |
| --- | --- | --- | --- | --- |
| 🚚 Rename ".stage()" | 369 | falexwolf | 2024-04-16 |
| to ".cache()", add |
| ".save(upload=None)" |
| --- | --- | --- | --- | --- |
| 🚚 Add "Run.replica | 370 | falexwolf | 2024-04-16 |
| ted_outputs" & |
| "Transform.ulabels" |
| --- | --- | --- | --- | --- |
| 📝 Update signature | 367 | Koncopd | 2024-04-12 | 0.64.11 |
| and docs for |
| Collection.mapped |
| --- | --- | --- | --- | --- |
| 🚸 Eliminate kwargs | 366 | sunnyosun | 2024-04-11 |
| --- | --- | --- | --- | --- |
| ✨ Add from_mudata | 365 | sunnyosun | 2024-04-10 | 0.64.7 |
| --- | --- | --- | --- | --- |
| ♻️ Replace TypeVar | 363 | falexwolf | 2024-04-04 | 0.64.6 |
| with TypeAlias |
| --- | --- | --- | --- | --- |
| 📝 Fix manual type | 362 | falexwolf | 2024-04-04 | 0.64.5 |
| annotations in |
| docstrings |
| --- | --- | --- | --- | --- |
| Future annotations | 361 | Zethson | 2024-04-04 |
| --- | --- | --- | --- | --- |
| ✨ Introduce | 360 | falexwolf | 2024-03-30 | 0.64.4 |
| Registry.get() |
| --- | --- | --- | --- | --- |
| ✅ Add test for | 359 | falexwolf | 2024-03-30 | 0.64.3 |
| string equivalency |
| of transform types |
| --- | --- | --- | --- | --- |
| 🔥 No collections | 358 | falexwolf | 2024-03-28 | 0.64.2 |
| from anndata or df |
| anymore |
| --- | --- | --- | --- | --- |
| ✨ Collection stage | 357 | Koncopd | 2024-03-25 | 0.64.1 |
| --- | --- | --- | --- | --- |
| 📝 Clarify the | 356 | falexwolf | 2024-03-19 |
| transform docs |
| --- | --- | --- | --- | --- |
| ♻️ Add a json field | 355 | falexwolf | 2024-03-17 | 0.64.0 |
| to run |
| --- | --- | --- | --- | --- |
| 🚚 Rename "run_at" | 354 | falexwolf | 2024-03-15 |
| to "started_at" for |
| "Run", add |
| "finished_at" |
| --- | --- | --- | --- | --- |
| 🚚 Add | 353 | falexwolf | 2024-03-15 |
| ".description" to |
| "Transform" & rename |
| "short_name" to |
| "key", char field |
| fixes |
| --- | --- | --- | --- | --- |
| 🚸 More sensible | 352 | falexwolf | 2024-03-09 | 0.63.0 |
| transform types |
| --- | --- | --- | --- | --- |
| 🏷️ Replace PathLike | 351 | falexwolf | 2024-03-05 | 0.62.1 |
| with UPathStr |
| --- | --- | --- | --- | --- |
| 🚚 Rename dev to | 349 | falexwolf | 2024-02-29 |
| core |
| --- | --- | --- | --- | --- |
| ✨ Add unknown_label | 345 | Koncopd | 2024-02-27 |
| to Collection.mapped |
| signature |
| --- | --- | --- | --- | --- |
| 🚚 Use var_field for | 348 | sunnyosun | 2024-02-27 |
| anndata |
| --- | --- | --- | --- | --- |
| 🚸 Simplify features | 347 | sunnyosun | 2024-02-27 |
| linking |
| --- | --- | --- | --- | --- |
| 🎨 Decouple features | 344 | sunnyosun | 2024-02-26 |
| from Artifact |
| construction |
| --- | --- | --- | --- | --- |
| Add registries | 346 | Zethson | 2024-02-26 |
| docstring |
| --- | --- | --- | --- | --- |
| 💚 Fix docs | 343 | sunnyosun | 2024-01-31 |
| --- | --- | --- | --- | --- |
| 📝 Fix docstrings | 342 | sunnyosun | 2024-01-31 |
| --- | --- | --- | --- | --- |
| 📝 Update docstring | 340 | sunnyosun | 2024-01-30 | 0.61.3 |
| to use bionty |
| --- | --- | --- | --- | --- |
| ✨ Add add_to_versi | 338 | sunnyosun | 2024-01-29 | 0.61.2 |
| on_family |
| --- | --- | --- | --- | --- |
| 📝 Update | 336 | sunnyosun | 2024-01-26 |
| collection.delete |
| signature |
| --- | --- | --- | --- | --- |
| 🚚 Rename .bionty to | 335 | sunnyosun | 2024-01-09 |
| .public |
| --- | --- | --- | --- | --- |
| 🚸 Order ".df()" by | 334 | falexwolf | 2024-01-08 |
| "updated_at" |
| --- | --- | --- | --- | --- |
| 🎨 Order artifact | 333 | falexwolf | 2024-01-07 | 0.61.0 |
| collections |
| --- | --- | --- | --- | --- |
| 📝 Explain | 332 | Koncopd | 2024-01-07 |
| join_vars="auto" in |
| Collection.mapped |
| --- | --- | --- | --- | --- |
| ✨ Add outer join | 331 | Koncopd | 2024-01-02 | 0.60.1 |
| and categories |
| caching to |
| Collection.mapped |
| --- | --- | --- | --- | --- |

# bionty

| --- | --- | --- | --- | --- |
| Name | PR | Developer | Date | Version |
| ====================== | ====================== | ====================== | ====================== | ====================== |
| 🚚 Rename "Bionty" | 536 | sunnyosun | 2024-01-12 | 0.36.0 |
| to "PublicOntology" |
| class |
| --- | --- | --- | --- | --- |
| 🚚 Rename "bionty" | 539 | sunnyosun |
| to "bionty-base" |
| --- | --- | --- | --- | --- |
| 🚚 Rename | 263 | sunnyosun | 2024-07-26 | 0.44.0 |
| "PublicSource" to |
| "Source" |
| --- | --- | --- | --- | --- |
| 🎨 Do not add | 261 | sunnyosun | 2024-07-25 |
| obsolete terms due |
| to ontology_id |
| duplication |
| --- | --- | --- | --- | --- |
| ⚡️ Speed up parents | 259 | sunnyosun | 2024-07-22 |
| --- | --- | --- | --- | --- |
| 🚚 Rename registry | 256 | falexwolf | 2024-07-17 |
| to record |
| --- | --- | --- | --- | --- |
| ♻️ Consciously use | 255 | falexwolf | 2024-07-10 |
| class method |
| --- | --- | --- | --- | --- |
| 🐛 Fix clashing | 249 | falexwolf | 2024-06-13 | 0.43.0 |
| reverse accessors |
| between |
| ".previous_runs" and |
| ".run" |
| --- | --- | --- | --- | --- |
| ♻️ Reformulate data | 247 | falexwolf | 2024-05-19 | 0.42.0 |
| lineage, remove json |
| field from run |
| --- | --- | --- | --- | --- |
| ♻️ Protect gene, | 246 | falexwolf | 2024-05-18 |
| protein, cell_marker |
| & pathway in their |
| FeatureSet |
| relationships |
| --- | --- | --- | --- | --- |
| 🏗️ Naming | 245 | falexwolf | 2024-05-18 |
| conventions for link |
| tables, protecting |
| deletion in link |
| tables, maintaining |
| integrity upon label |
| & feature renames |
| --- | --- | --- | --- | --- |
| ♻️ Account for | 244 | falexwolf | 2024-05-17 |
| migrations in |
| lnschema_core |
| --- | --- | --- | --- | --- |
| 🔥 Prune migrations | 243 | falexwolf | 2024-05-16 |
| --- | --- | --- | --- | --- |
| 🏗️ Spell out link | 239 | falexwolf | 2024-05-16 |
| tables with |
| "Artifact" and link |
| features |
| --- | --- | --- | --- | --- |
| 🔥 Remove linking | 238 | falexwolf | 2024-05-15 |
| Collection to all |
| Bionty entities |
| --- | --- | --- | --- | --- |
| ✨ Add sources | 237 | sunnyosun | 2024-05-14 |
| --- | --- | --- | --- | --- |
| 🎨 Fix passing | 236 | sunnyosun | 2024-05-13 |
| arguments to |
| from_public |
| --- | --- | --- | --- | --- |
| 🐛 Fix organism | 235 | sunnyosun | 2024-05-08 |
| --- | --- | --- | --- | --- |
| 🚑️ Fix | 232 | sunnyosun | 2024-04-18 |
| public_source in |
| inspect |
| --- | --- | --- | --- | --- |
| 🐛 Fix syncing | 230 | sunnyosun | 2024-04-11 |
| public sources |
| --- | --- | --- | --- | --- |
| ✨ Add PublicSource | 223 | sunnyosun | 2024-03-14 | 0.41.4 |
| .set_as_currently_u |
| sed |
| --- | --- | --- | --- | --- |
| ✏️ Fix encoding | 213 | sunnyosun | 2024-01-12 | 0.38.4 |
| --- | --- | --- | --- | --- |
| 🚑️ Re-encode | 212 | sunnyosun | 2024-01-10 | 0.38.3 |
| PublicSource |
| --- | --- | --- | --- | --- |
| 🚚 Rename .bionty to | 208 | sunnyosun | 2024-01-09 |
| .public |
| --- | --- | --- | --- | --- |
| 🚸 Do not create | 206 | sunnyosun | 2024-01-08 |
| organism when |
| calling bionty |
| --- | --- | --- | --- | --- |

# wetlab

| --- | --- | --- | --- | --- |
| Name | PR | Developer | Date | Version |
| ====================== | ====================== | ====================== | ====================== | ====================== |
| ♻️ Model | 60 | falexwolf | 2024-08-02 |
| categoricals via |
| simple "Literal" |
| --- | --- | --- | --- | --- |
| ✨ Improved support | 56 | Zethson | 2024-07-29 |
| for perturbations |
| --- | --- | --- | --- | --- |
| 🚚 Rename "lnschema- | 47 | sunnyosun | 2024-03-08 | 0.27.0 |
| lamin1" to "wetlab" |
| --- | --- | --- | --- | --- |

# nbproject

| --- | --- | --- | --- | --- |
| Name | PR | Developer | Date | Version |
| ====================== | ====================== | ====================== | ====================== | ====================== |
| ⬆️ Upgrade to | 284 | falexwolf | 2024-07-23 |
| pydantic v2 |
| --- | --- | --- | --- | --- |
| ⚡️ Warn instead of | 283 | Koncopd | 2024-05-08 | 0.10.3 |
| raising the |
| exception when |
| ipylab is not |
| installed |
| --- | --- | --- | --- | --- |
| ♻️ Make ipylab an | 282 | falexwolf | 2024-05-06 |
| optional dependency |
| --- | --- | --- | --- | --- |
| 🔇 Silence erroneous | 279 | falexwolf | 2024-02-27 | 0.10.1 |
| logging |
| --- | --- | --- | --- | --- |
| 🚸 Init version at 1 | 277 | falexwolf | 2024-01-11 | 0.10.0 |
| --- | --- | --- | --- | --- |