mp_api.client.routes.materials.similarity.SimilarityRester

class mp_api.client.routes.materials.similarity.SimilarityRester(api_key: str | None = None, endpoint: str | None = None, include_user_agent: bool = True, use_document_model: bool = True, session: requests.Session | None = None, headers: dict | None = None, mute_progress_bars: bool = False, db_version: str | None = None, local_dataset_cache: str | os.PathLike = PosixPath('/home/runner/mp_datasets'), force_renew: bool = False, query_builder: QueryBuilderWithCache | None = None, delta_catalog: DeltaCatalog | None = None, s3_client: Any | None = None, timeout: int = 20, **kwargs)[source]

Bases: BaseRester

Initialize the REST API helper class.

s3_client: boto3 S3 client object with which to connect to the object stores. timeout: Time in seconds to wait until a request timeout error is thrown

Parameters:
  • api_key – A String API key for accessing the MaterialsProject REST interface. Please obtain your API key at https://www.materialsproject.org/dashboard. If this is None, the code will check if there is a “PMG_MAPI_KEY” setting. If so, it will use that environment variable. This makes easier for heavy users to simply add this environment variable to their setups and MPRester can then be called without any arguments.

  • endpoint – Url of endpoint to access the MaterialsProject REST interface. Defaults to the standard Materials Project REST address at “https://api.materialsproject.org”, but can be changed to other urls implementing a similar interface.

  • include_user_agent – If True, will include a user agent with the HTTP request including information on pymatgen and system version making the API request. This helps MP support pymatgen users, and is similar to what most web browsers send with each page request. Set to False to disable the user agent.

  • session – requests Session object with which to connect to the API, for advanced usage only.

  • use_document_model – If False, skip the creating the document model and return data as a dictionary. This can be simpler to work with but bypasses data validation and will not give auto-complete for available fields.

  • headers – Custom headers for localhost connections.

  • mute_progress_bars – Whether to disable progress bars.

  • db_version (str) – Database version to use for data read from S3 (full dataset downloads, phase diagrams), e.g. “2026.04.13”. Defaults to the version currently served by the API. REST queries always use the current database. See available_db_versions() on a rester for the versions available.

  • local_dataset_cache – Target directory for downloading full datasets. Defaults to ‘mp_datasets’ in the user’s home directory

  • force_renew – Option to overwrite existing local dataset

  • query_builder – DEPRECATED, use delta_catalog. Instance of QueryBuilderWithCache whose catalog is used for querying delta tables. NOTE: Must be a QueryBuilderWithCache, a deltalake.QueryBuilder will be ignored.

  • delta_catalog – Instance of DeltaCatalog to use for querying delta tables.

  • s3_client – boto3 S3 client object with which to connect to the object stores.

  • timeout – Time in seconds to wait until a request timeout error is thrown

  • **kwargs – access to legacy kwargs that may be in the process of being deprecated

__init__(api_key: str | None = None, endpoint: str | None = None, include_user_agent: bool = True, use_document_model: bool = True, session: requests.Session | None = None, headers: dict | None = None, mute_progress_bars: bool = False, db_version: str | None = None, local_dataset_cache: str | os.PathLike = PosixPath('/home/runner/mp_datasets'), force_renew: bool = False, query_builder: QueryBuilderWithCache | None = None, delta_catalog: DeltaCatalog | None = None, s3_client: Any | None = None, timeout: int = 20, **kwargs)

Initialize the REST API helper class.

s3_client: boto3 S3 client object with which to connect to the object stores. timeout: Time in seconds to wait until a request timeout error is thrown

Parameters:
  • api_key – A String API key for accessing the MaterialsProject REST interface. Please obtain your API key at https://www.materialsproject.org/dashboard. If this is None, the code will check if there is a “PMG_MAPI_KEY” setting. If so, it will use that environment variable. This makes easier for heavy users to simply add this environment variable to their setups and MPRester can then be called without any arguments.

  • endpoint – Url of endpoint to access the MaterialsProject REST interface. Defaults to the standard Materials Project REST address at “https://api.materialsproject.org”, but can be changed to other urls implementing a similar interface.

  • include_user_agent – If True, will include a user agent with the HTTP request including information on pymatgen and system version making the API request. This helps MP support pymatgen users, and is similar to what most web browsers send with each page request. Set to False to disable the user agent.

  • session – requests Session object with which to connect to the API, for advanced usage only.

  • use_document_model – If False, skip the creating the document model and return data as a dictionary. This can be simpler to work with but bypasses data validation and will not give auto-complete for available fields.

  • headers – Custom headers for localhost connections.

  • mute_progress_bars – Whether to disable progress bars.

  • db_version (str) – Database version to use for data read from S3 (full dataset downloads, phase diagrams), e.g. “2026.04.13”. Defaults to the version currently served by the API. REST queries always use the current database. See available_db_versions() on a rester for the versions available.

  • local_dataset_cache – Target directory for downloading full datasets. Defaults to ‘mp_datasets’ in the user’s home directory

  • force_renew – Option to overwrite existing local dataset

  • query_builder – DEPRECATED, use delta_catalog. Instance of QueryBuilderWithCache whose catalog is used for querying delta tables. NOTE: Must be a QueryBuilderWithCache, a deltalake.QueryBuilder will be ignored.

  • delta_catalog – Instance of DeltaCatalog to use for querying delta tables.

  • s3_client – boto3 S3 client object with which to connect to the object stores.

  • timeout – Time in seconds to wait until a request timeout error is thrown

  • **kwargs – access to legacy kwargs that may be in the process of being deprecated

Methods

__init__([api_key, endpoint, ...])

Initialize the REST API helper class.

available_db_versions()

Database versions available for this collection's full dataset on S3.

count([criteria])

Return a count of total documents.

find_similar(structure_or_mpid[, top, ...])

Find structures most similar to a user-submitted structure.

fingerprint_structure(structure)

Get the fingerprint of a user-submitted structures.

get_data_by_id(document_id[, fields])

search([material_ids, num_chunks, ...])

Query similarity docs using a variety of search criteria.

Attributes

available_fields

delta_backed

delta_catalog

The DeltaCatalog used for delta-backed queries, created on first use.

primary_key

query_builder

use delta_catalog.

s3_client

session

suffix

document_model

alias of SimilarityDoc

fingerprint_structure(structure: Structure) → np.ndarray[source]

Get the fingerprint of a user-submitted structures.

search(material_ids: str | list[str] | None = None, num_chunks: int | None = None, chunk_size: int = 1000, all_fields: bool = True, fields: list[str] | None = None) → list[SimilarityDoc] | list[dict][source]

Query similarity docs using a variety of search criteria.

Parameters:
  • material_ids (str | list[str]) – A single Material ID string or list of strings (e.g., mp-149, [mp-149, mp-13]).

  • num_chunks (int) – Maximum number of chunks of data to yield. None will yield all possible.

  • chunk_size (int) – Number of data entries per chunk.

  • all_fields (bool) – Whether to return all fields in the document. Defaults to True.

  • fields (list[str]) – List of fields in SimilarityDoc to return data for. Default is material_id, last_updated, and formula_pretty if all_fields is False.

Returns:

([SimilarityDoc], [dict]) List of similarity documents or dictionaries.

find_similar(structure_or_mpid: Structure | str | MPID | AlphaID, top: int | None = 50, num_chunks: int | None = None, chunk_size: int | None = 1000) → list[SimilarityEntry] | list[dict][source]

Find structures most similar to a user-submitted structure.

Parameters:
  • structure_or_mpid – pymatgen .Structure, or str, MPID, AlphaID If a .Structure, the feature vector is computed on the fly If a str, MPID, or AlphaID, attempts to retrieve a pre-computed feature vector using the input as a material ID

  • top – int The number of most similar materials to return, defaults to 50. Setting to None will return the maximum possible number of most similar materials..

  • num_chunks (int or None) – Maximum number of chunks of data to yield. None will yield all possible.

  • chunk_size (int or None) – Number of data entries per chunk. The chunk_size is also used to limit the number of responses returned.

Returns:

([SimilarityEntry] | [dict]) List of SimilarityEntry documents (if use_document_model) or dict (otherwise) listing structures most similar to the input structure.

available_db_versions() → list[str]

Database versions available for this collection’s full dataset on S3.

Read from the DeltaTable’s log, no data is downloaded. Any of these can be pinned with MPRester(db_version=…) to download that version of the dataset.

Returns:

sorted database versions, e.g. [“2026.04.13”, “2026.09.28”]

Return type:

list of str

Raises:

MPRestError – if this collection isn’t delta-backed, or its dataset isn’t partitioned by database version.

count(criteria: dict | None = None) → int

Return a count of total documents.

Parameters:

criteria (dict | None) – As in .search(). Defaults to None

Returns:

Count of total results

Return type:

int

property delta_catalog: DeltaCatalog

The DeltaCatalog used for delta-backed queries, created on first use.

property query_builder: QueryBuilderWithCache

use delta_catalog.

Type:

Deprecated