Skip to content

Commit 505ddfe

Browse files
committed
query s3 for trajectories
1 parent 9d2048e commit 505ddfe

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

mp_api/client/routes/materials/tasks.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
from datetime import datetime
44
from typing import TYPE_CHECKING
55

6+
import pyarrow as pa
7+
from deltalake import DeltaTable, QueryBuilder
8+
from emmet.core.mpid import AlphaID
69
from emmet.core.tasks import CoreTaskDoc
10+
from emmet.core.trajectory import RelaxTrajectory
711

812
from mp_api.client.core import BaseRester, MPRestError
913
from mp_api.client.core.utils import validate_ids
@@ -16,6 +20,7 @@ class TaskRester(BaseRester):
1620
suffix: str = "materials/tasks"
1721
document_model: type[BaseModel] = CoreTaskDoc # type: ignore
1822
primary_key: str = "task_id"
23+
delta_backed = True
1924

2025
def get_trajectory(self, task_id):
2126
"""Returns a Trajectory object containing the geometry of the
@@ -26,16 +31,30 @@ def get_trajectory(self, task_id):
2631
task_id (str): Task ID
2732
2833
"""
29-
traj_data = self._query_resource_data(
30-
{"task_ids": [task_id]}, suburl="trajectory/", use_document_model=False
31-
)[0].get(
32-
"trajectories", None
33-
) # type: ignore
34+
as_alpha = str(AlphaID(task_id, padlen=8)).split("-")[-1]
3435

35-
if traj_data is None:
36+
traj_tbl = DeltaTable(
37+
"s3a://materialsproject-parsed/core/trajectories/",
38+
storage_options={"AWS_SKIP_SIGNATURE": "true", "AWS_REGION": "us-east-1"},
39+
)
40+
41+
traj_data = pa.table(
42+
QueryBuilder()
43+
.register("traj", traj_tbl)
44+
.execute(
45+
f"""
46+
SELECT *
47+
FROM traj
48+
WHERE identifier='{as_alpha}'
49+
"""
50+
)
51+
.read_all()
52+
).to_pylist(maps_as_pydicts="strict")
53+
54+
if not traj_data:
3655
raise MPRestError(f"No trajectory data for {task_id} found")
3756

38-
return traj_data
57+
return RelaxTrajectory(**traj_data[0]).to_pmg()
3958

4059
def search(
4160
self,

0 commit comments

Comments
 (0)