Skip to main content

Python client for the LCMD molecular database — typed access to molecules, reactions, fragments, and assembly templates

Project description

LCMD-DB

Python client for the LCMD molecular database.

Installation

uv add lcmd-db
# or
pip install lcmd-db

Quick start

from lcmd_db import load_dataset, load_molecules

# Load a subset (molecules included by default)
data = load_dataset("qm9")
data.molecules  # polars DataFrame

# Include multiple entity types
data = load_dataset("qm9", include=["molecules", "reactions", "fragments"])

# Include XYZ structure files
data = load_dataset("qm9", include_structures=True)

# Select specific properties
data = load_dataset("qm9", molecule_properties=["smiles", "energy"])

# Filter molecules server-side with SMARTS
data = load_dataset("formed", include=["molecules"], smarts="[OX2H]")

# Search molecules directly across the database
molecules = load_molecules(smarts="[OX2H]", smiles="CO")

# Choose output format
data = load_dataset("qm9", data_format="csv")

# Force re-download (bypass cache)
data = load_dataset("qm9", force_download=True)

Dataset API

load_dataset returns a SubsetData object containing polars DataFrames for each entity type. Convert it to a typed Dataset for lazy loading, filtering, and indexing:

data = load_dataset("qm9")

# Get a typed, iterable Dataset
molecules = data.as_dataset("molecules")

# Index and iterate
mol = molecules[0]          # Molecule(id=..., properties={...})
batch = molecules[10:20]    # Dataset slice

# Filter with polars expressions
import polars as pl
heavy = molecules.filter(pl.col("molecular_weight") > 100)

# Select specific columns
subset = molecules.select("smiles", "energy")

# Train/test split
train, test = molecules.train_test_split(test_size=0.2, seed=42)

# Export
df = molecules.to_polars()
pdf = molecules.to_pandas()
atoms = molecules.to_ase()   # requires ase

CLI

# Download a dataset
lcmd-db download qm9
lcmd-db download qm9 --include molecules --include structures
lcmd-db download formed --include molecules --smarts "[OX2H]"
lcmd-db download qm9 -f csv --force

# Browse available schemas
lcmd-db schema list
lcmd-db schema show qm9

# Manage cache
lcmd-db cache clear
lcmd-db cache clear qm9

# Sync type stubs for autocomplete
lcmd-db stubs sync

Configuration

Settings are controlled via environment variables (prefix LCMD_DB_) or programmatically:

Variable Description Default
LCMD_DB_BASE_URL API base URL https://lcmd-app.epfl.ch
LCMD_DB_CACHE_DIR Cache directory OS-dependent
LCMD_DB_TIMEOUT Download timeout (seconds) 300
LCMD_DB_AUTO_SYNC_STUBS Auto-sync type stubs on import true
from lcmd_db import settings

settings.base_url = "https://custom-instance.example.com"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lcmd_db-0.4.0.tar.gz (244.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lcmd_db-0.4.0-py3-none-any.whl (39.5 kB view details)

Uploaded Python 3

File details

Details for the file lcmd_db-0.4.0.tar.gz.

File metadata

  • Download URL: lcmd_db-0.4.0.tar.gz
  • Upload date:
  • Size: 244.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lcmd_db-0.4.0.tar.gz
Algorithm Hash digest
SHA256 3087b4db5fead61a759df1fe33dcd6ac910283d3706acdbdb93f6b0698b1ad29
MD5 b2508c7797eef56ef2506879885afa7b
BLAKE2b-256 fb1c661828ce89d2a1507306e81fa578cea67334c32723d7913f9215407cf300

See more details on using hashes here.

File details

Details for the file lcmd_db-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: lcmd_db-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 39.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lcmd_db-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c6ab2107e002de64cf6c26a986992902ea946aa3cc62ea3ceaa56f5aa95cf1d
MD5 c917cab5c3ecfca56fdfc5ca0f9aa7ad
BLAKE2b-256 a8dcea559959e709a16b7cd73ff29661900a0ef8d4c66bdbc13fb7a27646486e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page