mcpField
L
lamindb

lamindb

github.com/crazymsnデータ・データベース2335 回インストール22 週間前に更新
リポジトリ

lamindb について

LaminDBは、生物学データ向けのオープンソースデータフレームワークです。Python APIでデータセットを管理し、来歴追跡や検索、再現可能な研究ワークフローを支援します。

主な機能

  1. 01データセットのバージョン管理と来歴追跡
  2. 02メタデータや特徴量による検索
  3. 03スキーマ検証とデータキュレーション
  4. 04生物学オントロジーによる注釈
  5. 05ワークフロー・機械学習ツールとの連携

活用シーン

  1. 01シングルセル解析の入力と結果を追跡
  2. 02大規模データセットの絞り込みとストリーミング
  3. 03データ検証とオントロジー用語の標準化
  4. 04機械学習実験とデータ成果物の関連付け

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crazymsn/academic-skills --skill lamindb

インストール後、Claude Code で/lamindbを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
annotation-validation.md
core-concepts.md
data-management.md
integrations.md
ontologies.md
setup-deployment.md

詳細

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. アノテーションと検証

キュレーションプロセス:

  1. 検証: データセットが目的のスキーマに一致するかを確認する
  2. 標準化: タイプミスを修正し、同義語を正規の用語にマッピングする
  3. アノテーション: データセットをメタデータエンティティにリンクし、クエリ可能にする

スキーマの種類:

  • 柔軟なスキーマ: 既知の列のみを検証し、追加のメタデータを許可する
  • 最小必須スキーマ: 必須の列を指定し、その他の列を許可する
  • 厳格なスキーマ: 構造と値を完全に制御する

サポートされるデータ型:

  • DataFrame(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 datasets

配列ストア:

  • TileDB-SOMA(cellxgene対応)
  • Parquetファイルに対するSQLクエリ用のDuckDB

可視化:

  • インタラクティブな空間・シングルセルの可視化のためのVitessce

バージョン管理:

  • ソースコードの追跡のためのGitインテグレーション

リファレンス: references/integrations.md - インテグレーションのパターン、コード例、サードパーティシステムのトラブルシューティングについては、このファイルを参照してください。

6. セットアップとデプロイ

インストール:

  • 基本: uv pip install lamindb
  • エクストラ付き: uv 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 を効果的に使い始めるには:

  1. インストールとセットアップ(references/setup-deployment.md)

    • LaminDB と必要なエクストラをインストールする
    • lamin login で認証する
    • lamin init --storage ... でインスタンスを初期化する
  2. コアコンセプトを学ぶ(references/core-concepts.md)

    • Artifacts、Records、Runs、Transforms を理解する
    • アーティファクトの作成と取得を実践する
    • ワークフローに ln.track() と ln.finish() を実装する
  3. クエリを習得する(references/data-management.md)

    • レジストリのフィルタリングと検索を実践する
    • フィーチャーベースのクエリを学ぶ
    • 大容量ファイルのストリーミングを試す
  4. バリデーションを設定する(references/annotation-validation.md)

    • 研究分野に関連するフィーチャーを定義する
    • データ型ごとにスキーマを作成する
    • キュレーションのワークフローを実践する
  5. オントロジーを統合する(references/ontologies.md)

    • 関連する生物学オントロジー(遺伝子、細胞型など)をインポートする
    • 既存のアノテーションを検証する
    • オントロジーの用語でメタデータを標準化する
  6. ツールを接続する(references/integrations.md)

    • 既存のワークフローマネージャーと統合する
    • 実験トラッキングのために ML プラットフォームを連携させる
    • クラウドストレージとコンピュートを設定する

主要な原則

LaminDB を使う際は、次の原則に従ってください:

  1. すべてを追跡する:自動的なリネージ取得のため、すべての解析の冒頭で ln.track() を使用する

  2. 早期に検証する:大規模な解析の前にスキーマを定義し、データを検証する

  3. オントロジーを使う:標準化されたアノテーションのために、公開されている生物学オントロジーを活用する

  4. キーで整理する:アーティファクトのキーを階層的に構成する(例:project/experiment/batch/file.h5ad)

  5. まずメタデータをクエリする:大容量ファイルを読み込む前にフィルタリングと検索を行う

  6. 複製せず、バージョン管理する:変更のために新しいキーを作成するのではなく、組み込みのバージョン管理を使用する

  7. フィーチャーでアノテーションする:クエリ可能なメタデータのために、型付きのフィーチャーを定義する

  8. 十分にドキュメント化する:アーティファクト、スキーマ、Transforms に説明を追加する

  9. リネージを活用する:view_lineage() を使ってデータの来歴を把握する

  10. ローカルで始め、クラウドへスケールする: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 の機能に応じて、関連するリファレンスファイルを読んでください。

追加リソース

コメント