This release is a pre-release and may not be stable for production use.
ASE DB
This package provides a SQL Alchemy model to the ASE Atoms object.
For more information, see the documentation.
Basic Usage
The AtomsModel is the main model that translates an atoms object (and attached calculator info) into
a SQL model.
from asedb import AtomsModel, Element, initialize_engine, make_sqlite_engine
import ase
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
engine = make_sqlite_engine("foo.db") # Helper function to create a SQL Alchemy engine for sqlite
initialize_engine(engine) # Create necessary schema/tables
Session = sessionmaker(bind=engine)
session = Session()
atoms = ase.Atoms('H2',
positions=[[0, 0, 0],
[0, 0, 0.7]])
model = AtomsModel.from_atoms(atoms)
session.add(model)
session.commit()
model_id = model.id
loaded = session.query(AtomsModel).where(AtomsModel.id == model_id).scalar()
atoms_loaded = loaded.to_atoms() # The atoms object loaded from the database
print(atoms_loaded) # Atoms(symbols='H2', pbc=False, tags=...)
Here, we used the make_sqlite_engine helper function to create the SQL Alchemy engine
object for a sqlite database. You can also create your own engine, e.g. for postgres:
import urllib.parse
from sqlalchemy import create_engine
def make_engine():
database = os.environ["PG_DATABASE"]
user = os.environ["PG_USER"]
password = urllib.parse.quote_plus(os.environ["PG_PASSWORD"])
host = os.environ["PG_HOST"]
port = os.environ["PG_PORT"]
connection_string = (
f"postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}"
)
return create_engine(connection_string)
where the parameters for the connection parameters have been stored in the environment variables.
Querying
We can construct queries using the SQL Alchemy models, e.g. looking for all atoms objects with at least 2 hydrogen atoms:
# Fetch all AtomsModel objects that fit the query
results = (session.query(AtomsModel)
.join(Element)
.where((Element.symbol == 'H') & (Element.count >= 2))
.all())
# Convert them into actual Atoms objects
all_atoms = [res.to_atoms() for res in results]
Schema
By default, the schema asedb is used - except for sqlite databases, which doesn't
utilize schemas. In this case, the make_sqlite_engine helper function ensures
the schema is remapped to None.
For any "real" database connections, such as Postgres, the schema asedb will be used.
Metadata
Release files for asedb 0.0.1b0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| asedb-0.0.1b0.tar.gz | 23.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| asedb-0.0.1b0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.6 kB
Release files / asedb-0.0.1b0.tar.gz
| Download URL | asedb-0.0.1b0.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e73b6edb14f866038c87e5da9ad9b4cbc43f69b0ddb3549868c4153611bcd982
|
|
BLAKE2b-256 checksum How to use checksums |
999cfe7dc6a3bdfd9c87948046a716f9dd97780df477498830e5fb621cf11148
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.8
|
Release files / asedb-0.0.1b0-py3-none-any.whl
| Download URL | asedb-0.0.1b0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9b6a50c7e684db3b6d01e0a3601cac53e228f991f5009cd29da075c37a8866f2
|
|
BLAKE2b-256 checksum How to use checksums |
a164580ccabfcd362ba0904524968029f6b9737671999343942326de97592d8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.8
|
Security for asedb 0.0.1b0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.