[ PROMPT_NODE_26718 ]
data-management
[ SKILL_DOCUMENTATION ]
# LaminDB 数据管理
本文档涵盖了 LaminDB 中的查询、搜索、过滤和流式传输数据,以及组织和访问数据集的最佳实践。
## 注册表概览
查看可用的注册表及其内容:
python
import lamindb as ln
# 查看所有模块的注册表
ln.view()
# 查看最新的 100 个 artifacts
ln.Artifact.to_dataframe()
# 查看其他注册表
ln.Transform.to_dataframe()
ln.Run.to_dataframe()
ln.User.to_dataframe()
## 用于快速访问的 Lookup
对于少于 10 万条记录的注册表,`Lookup` 对象可实现便捷的自动补全:
python
# 创建 lookup
records = ln.Record.lookup()
# 按名称访问(IDE 中启用自动补全)
experiment_1 = records.experiment_1
sample_a = records.sample_a
# 也适用于生物本体
import bionty as bt
cell_types = bt.CellType.lookup()
t_cell = cell_types.t_cell
## 检索单个记录
### 使用 get()
检索且仅检索一条记录(如果匹配结果为零或多个,则报错):
python
# 通过 UID
artifact = ln.Artifact.get("aRt1Fact0uid000")
# 通过字段
artifact = ln.Artifact.get(key="data/experiment.h5ad")
user = ln.User.get(handle="researcher123")
# 通过本体 ID (针对 bionty)
cell_type = bt.CellType.get(ontology_id="CL:0000084")
### 使用 one() 和 one_or_none()
python
# 从 QuerySet 中获取且仅获取一条(如果为 0 或 >1 则报错)
artifact = ln.Artifact.filter(key="data.csv").one()
# 获取一条或 None(如果 >1 则报错)
artifact = ln.Artifact.filter(key="maybe_data.csv").one_or_none()
# 获取第一个匹配项
artifact = ln.Artifact.filter(suffix=".h5ad").first()
## 过滤数据
`filter()` 方法返回一个 QuerySet 以实现灵活检索:
python
# 基础过滤
artifacts = ln.Artifact.filter(suffix=".h5ad")
artifacts.to_dataframe()
# 多重条件 (AND 逻辑)
artifacts = ln.Artifact.filter(
suffix=".h5ad",
created_by=user
)
# 比较运算符
ln.Artifact.filter(size__gt=1e6).to_dataframe() # 大于
ln.Artifact.filter(size__gte=1e6).to_dataframe() # 大于等于
ln.Artifact.filter(size__lt=1e9).to_dataframe() # 小于
ln.Artifact.filter(size__lte=1e9).to_dataframe() # 小于等于
# 范围查询
ln.Artifact.filter(size__gte=1e6, size__lte=1e9).to_dataframe()
## 文本和字符串查询
python
# 精确匹配
ln.Artifact.filter(description="Experiment 1").to_dataframe()
# 包含 (区分大小写)
ln.Artifact.filter(description__contains