11from __future__ import annotations
22
3+ import zlib
34from typing import TYPE_CHECKING
45
6+ import numpy as np
57from emmet .core .mpid import MPID , AlphaID
68from emmet .core .similarity import CrystalNNSimilarity , SimilarityDoc , SimilarityEntry
9+ from pymatgen .core import Composition
710
811from mp_api .client .core import BaseRester , MPRestError
912from mp_api .client .core .utils import validate_ids
@@ -101,7 +104,12 @@ def find_similar(
101104 feature_vector = self .fingerprinter (structure_or_mpid )
102105
103106 result = self ._query_resource (
104- criteria = {"feature_vector" : feature_vector , "_limit" : chunk_size },
107+ criteria = {
108+ "feature_vector_hex" : zlib .compress (
109+ np .array (feature_vector ).tobytes ()
110+ ).hex (),
111+ "_limit" : chunk_size ,
112+ },
105113 suburl = "match" ,
106114 use_document_model = False , # Return type is not exactly a SimilarityDoc, closer to SimilarityEntry
107115 chunk_size = chunk_size ,
@@ -117,6 +125,7 @@ def find_similar(
117125 {
118126 "formula" : entry ["formula_pretty" ],
119127 "task_id" : entry ["material_id" ],
128+ "nelements" : len (Composition (entry ["formula_pretty" ]).elements ),
120129 "dissimilarity" : 100 * (1.0 - entry ["score" ]),
121130 }
122131 for entry in result
0 commit comments