🚸 Decouple features linking from Artifact construction [PR 1](https://github.com/laminlabs/lamindb/pull/1434) [2](https://github.com/laminlabs/lamindb/pull/1455) [3](https://github.com/laminlabs/lamindb/pull/1458) [sunnyosun](https://github.com/sunnyosun).
python
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)
<br>
- 🚸 Can now use `ln.track()` without `lamin track` [PR](https://github.com/laminlabs/lamindb/pull/1462) [falexwolf](https://github.com/falexwolf)
- 🐛 `lamin stage` respects new URL design [PR](https://github.com/laminlabs/lamindb/pull/1467) [falexwolf](https://github.com/falexwolf)
- 🚚 Rename `.dev` to `.core` [PR](https://github.com/laminlabs/lamindb/pull/1464) [falexwolf](https://github.com/falexwolf)
- ♻️ Improved `MappedCollection` [PR](https://github.com/laminlabs/lamindb/pull/1460) [PR](https://github.com/laminlabs/lamindb/pull/1448) [Koncopd](https://github.com/Koncopd)