lamindb について
LaminDBは、生物学のデータセットや計算ワークフローを管理する研究者向けのオープンソースPythonデータフレームワークです。バージョン管理、リネージ追跡、検索可能な注釈、スキーマ検証、生物学オントロジーを単一のAPIにまとめています。
主な機能
- 01バージョン管理されたデータセットの管理と検索
- 02データとワークフローのリネージ追跡
- 03スキーマによるデータ検証とキュレーション
- 04生物学オントロジーによる注釈の標準化
- 05ワークフローおよびMLOpsツールとの連携
活用シーン
- 01シングルセルやマルチモーダル生物データの管理
- 02解析ワークフローの入力と出力を追跡
- 03生物学メタデータの検証と標準化
- 04機械学習実験とデータ資産の関連付け
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jackspace/ claudeskillz --skill lamindbインストール後、Claude Code で/lamindbを入力して読み込まれたか確認します。
同梱ファイルSKILL.json
詳細
LaminDB
概要
LaminDB は、データを検索可能、追跡可能、再現可能、かつ FAIR(Findable、Accessible、Interoperable、Reusable)にすることを目的とした、生物学向けのオープンソースデータフレームワークです。レイクハウスアーキテクチャ、リネージ追跡、フィーチャーストア、生物学オントロジー、LIMS(Laboratory Information Management System:実験室情報管理システム)、ELN(Electronic Lab Notebook:電子実験ノート)の機能を、単一の Python API を通じて組み合わせた統合プラットフォームを提供します。
コアとなる価値提案:
- 検索性: メタデータ、フィーチャー、オントロジー用語によってデータセットを検索・フィルタリングできます
- 追跡性: 生データから解析、結果に至るまで、リネージを自動的に追跡します
- 再現性: データ、コード、環境のバージョン管理を行います
- FAIR 準拠: 生物学オントロジーを用いた標準化されたアノテーションを行います
このスキルを使用するタイミング
次のような場合にこのスキルを使用します:
- 生物学データセットの管理: scRNA-seq、bulk RNA-seq、空間トランスクリプトミクス、フローサイトメトリー、マルチモーダルデータ、EHR データ
- 計算ワークフローの追跡: ノートブック、スクリプト、パイプライン実行(Nextflow、Snakemake、Redun)
- データのキュレーションと検証: スキーマ検証、標準化、オントロジーに基づくアノテーション
- 生物学オントロジーの扱い: 遺伝子、タンパク質、細胞種、組織、疾患、経路(Bionty 経由)
- データレイクハウスの構築: 複数のデータセットに対する統一されたクエリインターフェース
- 再現性の確保: 自動バージョン管理、リネージ追跡、環境のキャプチャ
- ML パイプラインとの統合: Weights & Biases、MLflow、HuggingFace、scVI-tools との連携
- データインフラのデプロイ: ローカルまたはクラウドベースのデータ管理システムの構築
- データセットの共同利用: 標準化されたメタデータを伴うキュレーション済みの注釈付きデータの共有
コア機能
LaminDB は、相互に連携する 6 つの機能領域を提供します。それぞれの詳細は references フォルダに記載されています。
1. コアコンセプトとデータリネージ
主要なエンティティ:
- Artifacts: バージョン管理されたデータセット(DataFrame、AnnData、Parquet、Zarr など)
- Records: 実験上のエンティティ(サンプル、摂動、機器)
- Runs & Transforms: 計算のリネージ追跡(どのコードがどのデータを生成したか)
- Features: アノテーションとクエリのための型付きメタデータフィールド
主なワークフロー:
- ファイルまたは Python オブジェクトから artifacts を作成し、バージョン管理する
ln.track()とln.finish()でノートブックやスクリプトの実行を追跡する- 型付きフィーチャーで artifacts にアノテーションを付ける
artifact.view_lineage()でデータリネージのグラフを可視化する- 来歴によるクエリ(特定のコードや入力から生成されたすべての出力を検索)
参照: references/core-concepts.md - artifacts、records、runs、transforms、features、バージョン管理、リネージ追跡に関する詳細情報は、こちらを参照してください。
2. データ管理とクエリ
クエリ機能:
- オートコンプリートによるレジストリの探索と検索
get()、one()、one_or_none()による単一レコードの取得- 比較演算子(
__gt、__lte、__contains、__startswith)によるフィルタリング - フィーチャーに基づくクエリ(アノテーションされたメタデータによる検索)
- ダブルアンダースコア構文によるレジストリ間の走査
- レジストリ全体にわたる全文検索
- Q オブジェクト(AND、OR、NOT)による高度な論理クエリ
- メモリに読み込まずに大規模データセットをストリーミング処理
主なワークフロー:
- フィルタと並び替えを使って artifacts を閲覧する
- フィーチャー、作成日時、作成者、サイズなどでクエリする
- チャンク単位または配列スライシングで大容量ファイルをストリーミングする
- 階層化されたキーでデータを整理する
- artifacts をコレクションにまとめる
参照: references/data-management.md - 包括的なクエリパターン、フィルタリングの例、ストリーミング戦略、データ整理のベストプラクティスについては、こちらを参照してください。
3. アノテーションと検証
キュレーションプロセス:
- 検証:データセットが目的のスキーマに適合していることを確認します
- 標準化:誤字を修正し、類義語を標準用語に対応付けます
- アノテーション:クエリ可能にするため、データセットをメタデータエンティティにリンクします
スキーマの種類:
- 柔軟なスキーマ:既知の列のみを検証し、追加のメタデータを許可します
- 最小必須スキーマ:必須列を指定し、追加の列を許可します
- 厳密なスキーマ:構造と値を完全に制御します
サポートされるデータ型:
- DataFrames(Parquet、CSV)
- AnnData(単一細胞ゲノミクス)
- MuData(マルチモーダル)
- SpatialData(空間トランスクリプトミクス)
- TileDB-SOMA(スケーラブルな配列)
主なワークフロー:
- データ検証用の特徴量とスキーマを定義します
- 検証には
DataFrameCuratorまたはAnnDataCuratorを使用します .cat.standardize()で値を標準化します.cat.add_ontology()でオントロジーに対応付けます- スキーマとのリンクを付けてキュレーション済みの成果物を保存します
- 特徴量を使って検証済みのデータセットをクエリします
参考資料: references/annotation-validation.md — 詳細なキュレーションワークフロー、スキーマ設計パターン、検証エラーへの対処、ベストプラクティスについては、こちらをお読みください。
4. 生物学的オントロジー
利用可能なオントロジー(Bionty 経由):
- 遺伝子(Ensembl)、タンパク質(UniProt)
- 細胞型(CL)、細胞株(CLO)
- 組織(Uberon)、疾患(Mondo、DOID)
- 表現型(HPO)、経路(GO)
- 実験因子(EFO)、発生段階
- 生物(NCBItaxon)、薬剤(DrugBank)
主なワークフロー:
bt.CellType.import_source()で公開オントロジーをインポートします- キーワードまたは完全一致でオントロジーを検索します
- 類義語の対応付けを使って用語を標準化します
- 階層関係(親、子、祖先)を調べます
- オントロジーの用語に照らしてデータを検証します
- データセットにオントロジーレコードでアノテーションを付けます
- カスタム用語と階層を作成します
- 複数の生物種のコンテキスト(ヒト、マウスなど)に対応します
参考資料: references/ontologies.md — オントロジー操作、標準化戦略、階層の探索、アノテーションワークフローについて詳しくは、こちらをお読みください。
5. インテグレーション
ワークフローマネージャー:
- Nextflow:パイプラインのプロセスと出力を追跡します
- Snakemake:Snakemake ルールに統合します
- Redun:Redun のタスク追跡と組み合わせます
MLOps プラットフォーム:
- Weights & Biases:実験をデータ成果物にリンクします
- MLflow:モデルと実験を追跡します
- HuggingFace:モデルのファインチューニングを追跡します
- scVI-tools:単一細胞解析のワークフロー
ストレージシステム:
- ローカルファイルシステム、AWS S3、Google Cloud Storage
- S3 互換(MinIO、Cloudflare R2)
- HTTP/HTTPS エンドポイント(読み取り専用)
- HuggingFace データセット
配列ストア:
- TileDB-SOMA(cellxgene のサポート付き)
- Parquet ファイルへの SQL クエリ用の DuckDB
可視化:
- インタラクティブな空間/単一細胞可視化用の Vitessce
バージョン管理:
- ソースコードの追跡に Git を統合します
参考資料: references/integrations.md — インテグレーションのパターン、コード例、サードパーティシステムのトラブルシューティングについては、こちらをお読みください。
6. セットアップとデプロイ
インストール:
- 基本:
pip install lamindb - 追加機能付き:
pip install 'lamindb[gcp,zarr,fcs]' - モジュール:bionty、wetlab、clinical
インスタンスの種類:
- ローカル SQLite(開発用)
- クラウドストレージ + SQLite(小規模チーム向け)
- クラウドストレージ + PostgreSQL(本番環境)
ストレージの選択肢:
- ローカルファイルシステム
- リージョンと権限を設定可能な AWS S3
- Google Cloud Storage
- S3 互換エンドポイント(MinIO、Cloudflare R2)
設定:
- クラウドファイルのキャッシュ管理
- マルチユーザーシステムの設定
- Git リポジトリの同期
- 環境変数
デプロイパターン:
- ローカル開発環境からクラウド本番環境への移行
- マルチリージョンデプロイ
- 個人用インスタンスを使用した共有ストレージ
参考資料: references/setup-deployment.md — インストール、設定、ストレージのセットアップ、データベース管理、セキュリティのベストプラクティス、トラブルシューティングについて詳しくは、こちらをお読みください。
よくあるユースケースのワークフロー
ユースケース 1:オントロジー検証を伴う単一細胞 RNA-seq 解析
import lamindb as ln
import bionty as bt
import anndata as ad
# Start tracking
ln.track(params={"analysis": "scRNA-seq QC and annotation"})
# Import cell type ontology
bt.CellType.import_source()
# Load data
adata = ad.read_h5ad("raw_counts.h5ad")
# Validate and standardize cell types
adata.obs["cell_type"] = bt.CellType.standardize(adata.obs["cell_type"])
# Curate with schema
curator = ln.curators.AnnDataCurator(adata, schema)
curator.validate()
artifact = curator.save_artifact(key="scrna/validated.h5ad")
# Link ontology annotations
cell_types = bt.CellType.from_values(adata.obs.cell_type)
artifact.feature_sets.add_ontology(cell_types)
ln.finish()
ユースケース 2:クエリ可能なデータレイクハウスの構築
import lamindb as ln
# Register multiple experiments
for i, file in enumerate(data_files):
artifact = ln.Artifact.from_anndata(
ad.read_h5ad(file),
key=f"scrna/batch_{i}.h5ad",
description=f"scRNA-seq batch {i}"
).save()
# Annotate with features
artifact.features.add_values({
"batch": i,
"tissue": tissues[i],
"condition": conditions[i]
})
# Query across all experiments
immune_datasets = ln.Artifact.filter(
key__startswith="scrna/",
tissue="PBMC",
condition="treated"
).to_dataframe()
# Load specific datasets
for artifact in immune_datasets:
adata = artifact.load()
# Analyze
ユースケース 3:W&B 連携を伴う ML パイプライン
import lamindb as ln
import wandb
# Initialize both systems
wandb.init(project="drug-response", name="exp-42")
ln.track(params={"model": "random_forest", "n_estimators": 100})
# Load training data from LaminDB
train_artifact = ln.Artifact.get(key="datasets/train.parquet")
train_data = train_artifact.load()
# Train model
model = train_model(train_data)
# Log to W&B
wandb.log({"accuracy": 0.95})
# Save model in LaminDB with W&B linkage
import joblib
joblib.dump(model, "model.pkl")
model_artifact = ln.Artifact("model.pkl", key="models/exp-42.pkl").save()
model_artifact.features.add_values({"wandb_run_id": wandb.run.id})
ln.finish()
wandb.finish()
ユースケース 4:Nextflow パイプラインとの連携
# In Nextflow process script
import lamindb as ln
ln.track()
# Load input artifact
input_artifact = ln.Artifact.get(key="raw/batch_${batch_id}.fastq.gz")
input_path = input_artifact.cache()
# Process (alignment, quantification, etc.)
# ... Nextflow process logic ...
# Save output
output_artifact = ln.Artifact(
"counts.csv",
key="processed/batch_${batch_id}_counts.csv"
).save()
ln.finish()
はじめのチェックリスト
LaminDB を効果的に使い始めるには:
-
インストールとセットアップ(
references/setup-deployment.md)- LaminDB と必要なエクストラをインストールする
lamin loginで認証するlamin init --storage ...でインスタンスを初期化する
-
コアコンセプトを学ぶ(
references/core-concepts.md)- Artifacts、Records、Runs、Transforms を理解する
- アーティファクトの作成と取得を実践する
- ワークフローに
ln.track()とln.finish()を実装する
-
クエリを習得する(
references/data-management.md)- レジストリのフィルタリングと検索を実践する
- フィーチャーベースのクエリを学ぶ
- 大容量ファイルのストリーミングを試す
-
バリデーションを設定する(
references/annotation-validation.md)- 研究分野に関連するフィーチャーを定義する
- データ型ごとにスキーマを作成する
- キュレーションのワークフローを実践する
-
オントロジーを統合する(
references/ontologies.md)- 関連する生物学オントロジー(遺伝子、細胞型など)をインポートする
- 既存のアノテーションを検証する
- オントロジーの用語でメタデータを標準化する
-
ツールを接続する(
references/integrations.md)- 既存のワークフローマネージャーと統合する
- 実験トラッキングのために ML プラットフォームを連携させる
- クラウドストレージとコンピュートを設定する
主要な原則
LaminDB を使う際は、次の原則に従ってください:
-
すべてを追跡する:自動的なリネージ取得のため、すべての解析の冒頭で
ln.track()を使用する -
早期に検証する:大規模な解析の前にスキーマを定義し、データを検証する
-
オントロジーを使う:標準化されたアノテーションのために、公開されている生物学オントロジーを活用する
-
キーで整理する:アーティファクトのキーを階層的に構成する(例:
project/experiment/batch/file.h5ad) -
まずメタデータをクエリする:大容量ファイルを読み込む前にフィルタリングと検索を行う
-
複製せず、バージョン管理する:変更のために新しいキーを作成するのではなく、組み込みのバージョン管理を使用する
-
フィーチャーでアノテーションする:クエリ可能なメタデータのために、型付きのフィーチャーを定義する
-
十分にドキュメント化する:アーティファクト、スキーマ、Transforms に説明を追加する
-
リネージを活用する:
view_lineage()を使ってデータの来歴を把握する -
ローカルで始め、クラウドへスケールする:SQLite でローカル開発を行い、PostgreSQL でクラウドにデプロイする
リファレンスファイル
このスキルには、機能ごとに整理された包括的なリファレンスドキュメントが含まれています:
references/core-concepts.md- Artifacts、Records、Runs、Transforms、フィーチャー、バージョン管理、リネージreferences/data-management.md- クエリ、フィルタリング、検索、ストリーミング、データの整理references/annotation-validation.md- スキーマ設計、キュレーションのワークフロー、検証戦略references/ontologies.md- 生物学オントロジーの管理、標準化、階層構造references/integrations.md- ワークフローマネージャー、MLOps プラットフォーム、ストレージシステム、ツールreferences/setup-deployment.md- インストール、設定、デプロイ、トラブルシューティング
タスクに必要な LaminDB の機能に応じて、関連するリファレンスファイルを読んでください。
追加リソース
- 公式ドキュメント:https://docs.lamin.ai
- API リファレンス:https://docs.lamin.ai/api
- GitHub リポジトリ:https://github.com/laminlabs/lamindb
- チュートリアル:https://docs.lamin.ai/tutorial
- FAQ:https://docs.lamin.ai/faq