Skip to content

Commit

Permalink
Substrates now using string and numeric query op
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason Munro committed May 28, 2021
1 parent 8172602 commit d572c09
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 21 deletions.
32 changes: 14 additions & 18 deletions src/mp_api/routes/substrates/query_operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,18 @@ class SubstrateStructureQuery(QueryOperator):

def query(
self,
film_id: Optional[str] = Query(None, description="Materials Project ID of the film material.",),
substrate_id: Optional[str] = Query(None, description="Materials Project ID of the substrate material.",),
substrate_formula: Optional[str] = Query(None, description="Reduced formula of the substrate material.",),
film_orientation: Optional[str] = Query(
None, description="Comma separated integers defining the film surface orientation.",
None,
description="Comma separated integers defining the film surface orientation.",
),
substrate_orientation: Optional[str] = Query(
None, description="Comma separated integers defining the substrate surface orientation.",
None,
description="Comma separated integers defining the substrate surface orientation.",
),
) -> STORE_PARAMS:

crit = defaultdict(dict) # type: dict

if film_id:
crit["film_id"] = film_id

if substrate_id:
crit["sub_id"] = substrate_id

if substrate_formula:
crit["sub_form"] = substrate_formula

if film_orientation:
crit["film_orient"] = film_orientation.replace(",", " ")

Expand All @@ -57,13 +47,19 @@ class EnergyAreaQuery(QueryOperator):
def query(
self,
area_max: Optional[float] = Query(
None, description="Maximum value for the minimum coincident interface area in Ų.",
None,
description="Maximum value for the minimum coincident interface area in Ų.",
),
area_min: Optional[float] = Query(
None, description="Minimum value for the minimum coincident interface area in Ų.",
None,
description="Minimum value for the minimum coincident interface area in Ų.",
),
energy_max: Optional[float] = Query(
None, description="Maximum value for the energy in meV.",
),
energy_min: Optional[float] = Query(
None, description="Minimum value for the energy in meV.",
),
energy_max: Optional[float] = Query(None, description="Maximum value for the energy in meV.",),
energy_min: Optional[float] = Query(None, description="Minimum value for the energy in meV.",),
) -> STORE_PARAMS:

crit = defaultdict(dict) # type: dict
Expand Down
15 changes: 12 additions & 3 deletions src/mp_api/routes/substrates/resources.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
from maggma.api.resource import ReadOnlyResource
from mp_api.routes.substrates.models import SubstratesDoc

from maggma.api.query_operator import PaginationQuery, SortQuery, SparseFieldsQuery
from mp_api.routes.substrates.query_operators import SubstrateStructureQuery, EnergyAreaQuery
from maggma.api.query_operator import (
PaginationQuery,
SortQuery,
SparseFieldsQuery,
NumericQuery,
StringQueryOperator,
)
from mp_api.routes.substrates.query_operators import SubstrateStructureQuery


def substrates_resource(substrates_store):
Expand All @@ -11,7 +17,10 @@ def substrates_resource(substrates_store):
SubstratesDoc,
query_operators=[
SubstrateStructureQuery(),
EnergyAreaQuery(),
NumericQuery(model=SubstratesDoc),
StringQueryOperator(
model=SubstratesDoc, excluded_fields=["film_orient", "orient"]
),
SortQuery(),
PaginationQuery(),
SparseFieldsQuery(SubstratesDoc, default_fields=["film_id", "sub_id"]),
Expand Down

0 comments on commit d572c09

Please sign in to comment.