euleris
Topological molecular analysis - the official Python client for the Euleris API.
euleris is a thin HTTP client. All computation (spectrum extraction, scoring,
ADME/toxicity prediction, similarity search) runs server-side on the Euleris
compute engine. The client just sends SMILES and returns typed results.
Install
pip install euleris
# optional: DataFrame support
pip install "euleris[pandas]"
Authentication
Get an API key (ek_...) from https://cognitive-engineering.dev/pricing.
Provide it in any of these ways (checked in this order):
- Environment variable:
export EULERIS_API_KEY=ek_your_key
- Config file
~/.euleris/config:[default] api_key = ek_your_key
- Explicitly in code:
import euleris euleris.configure(api_key="ek_your_key")
Quickstart
import euleris
# Analyze a single molecule
result = euleris.analyze("CCO")
print(result.score) # topological score
print(result.spectrum) # {"N3": 0, "N6": 1, ...}
print(result.meta.atoms) # 3
# Structural descriptors (V1.4)
print(result.N6_m) # aromatic cycle density N6/m
print(result.phi) # fraction of bonds on at least one cycle
print(result.rho_lq) # bridge/hub criticality correlation, None if not computed
print(result.spectral.q1) # full spectral block when rho_lq is available
# Batch analysis
batch = euleris.batch(["CCO", "c1ccccc1", "CC(=O)O"])
print(batch.stats) # {"total": 3, "valid": 3, "invalid": 0}
df = batch.to_dataframe() # requires euleris[pandas]
# Compare two molecules
cmp = euleris.compare("c1ccccc1", "c1ccncc1")
print(cmp.delta_score)
# Similarity search
sim = euleris.similar("c1ccccc1", top_k=5, library="zinc")
for match in sim.matches:
print(match.smiles, match.similarity)
Using an explicit client
from euleris import EulerisClient
client = EulerisClient(api_key="ek_your_key")
result = client.analyze("CCO")
Error handling
from euleris import EulerisError, AuthError, RateLimitError, InvalidSmilesError
try:
euleris.analyze("not-a-molecule")
except InvalidSmilesError as e:
print("Bad SMILES:", e)
except RateLimitError as e:
print("Slow down:", e)
except AuthError as e:
print("Check your key:", e)
except EulerisError as e:
print("Something went wrong:", e)
Links
- API docs: https://cognitive-engineering.dev/euleris/app/api-docs
- Pricing / API keys: https://cognitive-engineering.dev/pricing
License
Proprietary. Copyright (c) 2026 Cognitive Engineering / David Martin Venti.
Metadata
Release files for euleris 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| euleris-0.2.0.tar.gz | 17.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| euleris-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.4 kB
Release files / euleris-0.2.0.tar.gz
| Download URL | euleris-0.2.0.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0d2980b409eb14a08d77062a813000d5882cd663d96ff060756e2f6c33455da
|
|
BLAKE2b-256 checksum How to use checksums |
19d7eb86c7c067c861f87bcd16313e9ee0557337f96ca1b590fcf971f028219c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / euleris-0.2.0-py3-none-any.whl
| Download URL | euleris-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
85afefa146697b760dc7580f0176c517caa2f15cbeb834d93e475dbbdc14de77
|
|
BLAKE2b-256 checksum How to use checksums |
80eef4f9aa1c675332a7ac0849f2ab663a4008d4bd31cdcfcda0ac923c68937f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|