plate_model_manager package
Submodules
plate_model_manager.auxiliary module
- plate_model_manager.auxiliary.check_update()[source]
Check if new versions of plate models are available on Zenodo. Mainly used by Michael Chin to update the PMM server.
- plate_model_manager.auxiliary.get_plate_model(model_name: str, data_dir: str | PathLike) PlateModel | None[source]
Convenient function to create a
PlateModelinstance using best effort. First, try to get the plate model withPlateModelManager. If the servers cannot be reached, try to use the local plate model files which were previously downloaded.- Parameters:
model_name – the plate model name of interest
data_dir – The folder to save the plate model files.
- Returns:
a
PlateModelobject orNoneif the plate model name is no good.
plate_model_manager.exceptions module
Bases:
Exception
plate_model_manager.file_fetcher module
- class plate_model_manager.file_fetcher.FileFetcher[source]
Bases:
object- abstractmethod fetch_file(url: str, filepath: str, filename: str | None = None, etag: str | None = None, auto_unzip: bool = True)[source]
download a file from “url” and save to “filepath” You can give a new “filename” for the file. If “etag” is given, check if etag has changed. If not changed, do not download again.
- Parameters:
url – the url to download file from
filepath – location to keep the file
filename – new file name (optional)
etag – old etag. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- Returns:
new etag
- abstractmethod fetch_files(urls, filepaths, filenames=[], etags=[], auto_unzip: bool = True)[source]
fetch multiple files concurrently
- Parameters:
urls – the urls to download files from
filepaths – location(s) to keep the files. This can be one path for all files or one path for each file.
filenames – new file names (optional)
etags – old etags. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- fetch_large_file(url: str, filepath: str, filename: str | None, filesize: int | None = None, etag: str | None = None, auto_unzip: bool = True, check_etag: bool = True, timeout=(None, None))[source]
- use multi-thread to fetch a large file.
LOOK HERE!!! Be careful when use this function. You cannot get partial content if the content is gzip encoded. So the file might be larger than the one download directly. It is useful when downloading large .zip file. Warning: this could be slower than single thread download. Some firewall sequences these requests to shape network traffic and defeat the purpose of this function completely.
check the etag and get content-length before calling this function
- Parameters:
url – the file url
filepath – location to keep the file
filename – the output filename specified by caller. ignored if auto unzip compressed data.
filesize – the size of file (in bytes)
etag – old etag. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- Returns:
new etag
plate_model_manager.network_aiohttp module
- class plate_model_manager.network_aiohttp.AiohttpFetcher[source]
Bases:
FileFetcher- fetch_file(url: str, filepath: str, filename: str | None = None, etag: str | None = None, auto_unzip: bool = True)[source]
- download a file from “url” and save to “filepath”
You can give a new “filename” for the file. If “etag” is given, check if etag has changed. If not changed, do not download again.
- Parameters:
url – the url to download file from
filepath – location to keep the file
etag – old etag. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- fetch_files(urls, filepaths, filenames=[], etags=[], auto_unzip: bool = True)[source]
fetch multiple files concurrently
- Parameters:
urls – the urls to download files from
filepaths – location(s) to keep the files. This can be one path for all files or one path for each file.
etags – old etags. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- plate_model_manager.network_aiohttp.fetch_file(url: str, filepath: str, filename: str | None = None, etag: str | None = None, auto_unzip: bool = True)[source]
plate_model_manager.network_requests module
- class plate_model_manager.network_requests.RequestsFetcher[source]
Bases:
FileFetcher- fetch_file(url: str, filepath: str, filename: str | None = None, etag: str | None = None, auto_unzip: bool = True, timeout=(None, None))[source]
- download a file from “url” and save to “filepath”
You can give a new “filename” for the file. If “etag” is given, check if etag has changed. If not changed, do not download again.
- Parameters:
url – the url to download file from
filepath – location to keep the file
etag – old etag. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- fetch_files(urls, filepaths: list | str, filenames=[], etags=[], auto_unzip: bool = True, timeout=(None, None))[source]
fetch multiple files concurrently
- Parameters:
urls – the urls to download files from
filepaths – location(s) to keep the files. This can be one path for all files or one path for each file.
etags – old etags. if the old etag is the same with the one on server, do not download again.
auto_unzip – bool flag to indicate if unzip .zip file automatically
- plate_model_manager.network_requests.fetch_file(url: str, filepath: str, filename: str | None = None, etag: str | None = None, auto_unzip: bool = True, timeout=(None, None))[source]
plate_model_manager.plate_model module
- class plate_model_manager.plate_model.PlateModel(model_name: str, model_cfg=None, data_dir: str = '.', reference_frame: ReferenceFrame | None = None, readonly=False, timeout=(None, None))[source]
Bases:
objectDownload and manage files required for a plate reconstruction model.
👀👇 LOOK HERE!!! 👀👇
Normally you should always use
PlateModelManager.get_model()to get aPlateModelobject. Create aPlateModelobject directly only when you don’t have Internet connection and would like to use the local model files inreadonlymode. Do not create aPlateModelobject directly if you have no idea what’s going on.- create_model_dir()[source]
Ensure the model folder exists and refresh local metadata files.
This method creates
self.model_dirwhen missing, then always rewrites.metadata.jsonandreadme.txtfrom the current in-memory model configuration, even if the folder already exists.
- download_all_layers()[source]
Download all layers. This function calls
download_layer_files()on every available layer.
- download_time_dependent_rasters(raster_name, times=None)[source]
Download time-dependent rasters for a given raster name.
Call
get_avail_time_dependent_raster_names()to see all the available raster names in this model.- Parameters:
raster_name – the raster name of interest
times – if not given, download from begin to end with 1My interval
- get_COBs(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
Continent-Ocean Boundariesfiles.
- get_age_grid(time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for the age grid raster file at a given time.
- get_age_grids(times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for the age grid raster files at given times.
- get_avail_time_dependent_raster_names()[source]
Return all time-dependent raster names in this plate model.
- get_coastlines(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
coastlinesfiles.
- get_continental_polygons(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
continental polygonsfiles.
- get_data_dir()[source]
Return the path to a folder (parent folder of the
model dir) containing a set of downloaded models.
- get_layer(layer_name: str, return_none_if_not_exist: bool = False) List[str] | None[source]
Get a list of layer files by a layer name. Call
get_avail_layers()to get all the available layer names.Raise
LayerNotFoundInModelexception to get user’s attention by default. Setreturn_none_if_not_existtoTrueif you don’t want to see theLayerNotFoundInModelexception.- Parameters:
layer_name – The layer name of interest.
return_none_if_not_exist – If set to
True, returnNonewhen the layer does not exist in the model.
- Returns:
A list of file names or
Noneifreturn_none_if_not_existis set toTrue.
:raises
LayerNotFoundInModel: Raise this exception if the layer name does not exist in this model.
- get_layer_metadata(layer_name: str, return_none_if_not_exist: bool = False) Dict | None[source]
Return metadata for a layer as a dictionary.
In writable mode, this method ensures the layer is downloaded/updated before reading metadata. In readonly mode, it reads from the local layer folder directly.
- Parameters:
layer_name – The layer name of interest.
return_none_if_not_exist – If set to
True, returnNonewhen the layer does not exist in the model.
- Returns:
Layer metadata dictionary, or
Noneifreturn_none_if_not_existis set toTrueand the layer is not found.
- :raises
LayerNotFoundInModel: Raise this exception if the layer name does not exist in this model.
- Raises:
Exception – If the layer metadata file is missing.
- get_raster(raster_name: str, time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for a single time-dependent raster.
The final raster key is built from
raster_nameand optional suffixes fromgenerated_fromandreference_frame(in that order), matching the naming convention used inmodel["TimeDepRasters"].- Parameters:
raster_name – Base raster name in
TimeDepRasters(for example,"AgeGrids").time – Reconstruction time (Ma) to fetch.
reference_frame – Optional reference-frame suffix to append to the raster name.
generated_from – Optional generation-method suffix to append to the raster name.
- Returns:
Local file path for the requested raster at
time.- Raises:
Exception – If this model has no
TimeDepRastersentry, if the constructed raster name is not configured, if the file is missing in readonly mode, or if a download fails in writable mode.
- get_rasters(raster_name: str, times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for a sequence of time-dependent rasters.
The final raster key is built from
raster_nameand optional suffixes fromgenerated_fromandreference_frame(in that order), matching the naming convention used inmodel["TimeDepRasters"].- Parameters:
raster_name – Base raster name in
TimeDepRasters(for example,"AgeGrids").times – Reconstruction times (Ma) to fetch.
reference_frame – Optional reference-frame suffix to append to the raster name.
generated_from – Optional generation-method suffix to append to the raster name.
- Returns:
Local file paths for the requested times, in the same order as
times.- Raises:
Exception – If this model has no
TimeDepRastersentry, if the constructed raster name is not configured, if a requested file is missing in readonly mode, or if a download fails in writable mode.
- get_rotation_model(reference_frame: ReferenceFrame | None = None)[source]
Return rotation files, and optionally a PMAG anchor plate ID.
Rotation files are read from the local model directory in
readonlymode, or downloaded/updated first in writable mode.When
reference_frameisReferenceFrame.PmagReferenceFrame, this method also returns the anchor plate ID required by consumers that need PMAG reference frame rotations. The anchor ID is read frommodel["Attributes"]["PmagReferenceFrameAnchorPID"]when present. If that value is missing but this model is already under PMAG reference frame, set the anchor ID to0, such asmatthews2016_pmag_refmodel.- Parameters:
reference_frame – Optional reference frame for the returned rotation model. (since version 1.4.0)
- Returns:
If
reference_frameis PMAG, returns(rotation_files, anchor_pid)whererotation_filesis a list of.rot/.grotfile paths andanchor_pidis an integer. Otherwise returns onlyrotation_files.- Raises:
Exception – If PMAG is requested but the model is not PMAG and
Attributes.PmagReferenceFrameAnchorPIDis not defined.
- get_spreading_rate_grid(time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for the spreading rate grid raster file at a given time.
- get_spreading_rate_grids(times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for the spreading rate grid raster files at given times.
- get_static_polygons(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
static polygonsfiles.
- get_topologies(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
topologiesfiles.
- static is_model_dir(folder_path: str)[source]
Return
Trueif the folder contains files of a plate model, otherwiseFalse.
- property model_dir
Return the folder path for this model under
data_dir.
plate_model_manager.plate_model_manager module
- class plate_model_manager.plate_model_manager.PlateModelManager(model_manifest: str = '', timeout=(None, None))[source]
Bases:
objectManage a set of publicly available plate reconstruction models. The model files are hosted on EarthByte servers. You need Internet connection to use this class and download the files.
- download_all_models(data_dir: str = './') None[source]
Download all available models into the
data_dir.- Parameters:
data_dir (str) – The folder to save the model files.
- static get_local_available_model_names(local_dir: str)[source]
Return a list of model names in a local folder.
- Parameters:
local_dir (str) – The local folder containing models.
- get_model(model_name: str = 'default', data_dir: str = '.', reference_frame: ReferenceFrame | None = None) PlateModel | None[source]
Retrieve a
PlateModelobject for a given plate model name.This method resolves model aliases and creates a PlateModel instance configured with the model’s metadata. Alias resolution follows chains and detects circular references to prevent infinite loops.
Call
get_available_model_names()to see a list of available model names and valid aliases.- Parameters:
model_name – The name of the plate model to retrieve. Case-insensitive. Can be a direct model name, an alias, or a variant with reference frame suffix (e.g., “model_pmag_ref”). Defaults to “default”.
data_dir – The folder path to save downloaded plate model files. Defaults to the current directory (“.”); This path can be changed later with
PlateModel.set_data_dir().reference_frame – Optional reference frame for the plate model. If set to
ReferenceFrame.PmagReferenceFrameand a “_pmag_ref” variant exists, that variant will be loaded automatically.
- Returns:
A
PlateModelobject if the model is found and successfully created,Noneif the model name is not found in the manifest.- Raises:
InvalidConfigFile – If a circular alias chain is detected or if the maximum alias resolution depth is exceeded, indicating an error in the model manifest.
- Example:
>>> pmm = PlateModelManager() >>> model = pmm.get_model("muller2016", data_dir="./models") >>> if model: ... model.download_all_layers()
plate_model_manager.present_day_rasters module
- class plate_model_manager.present_day_rasters.PresentDayRasterManager(data_dir='present-day-rasters', raster_manifest=None)[source]
Bases:
objectManage the present-day rasters.
- get_raster(_name: str, width=1800, height=800, bbox=[-180, -80, 180, 80], large_file_hint=True)[source]
Download a raster file by name, save the raster file in
self.data_dirand return the local path to the raster file.Call
list_present_day_rasters()to see a list of available present-day raster names.
plate_model_manager.zenodo module
Module contents
- class plate_model_manager.PlateModel(model_name: str, model_cfg=None, data_dir: str = '.', reference_frame: ReferenceFrame | None = None, readonly=False, timeout=(None, None))[source]
Bases:
objectDownload and manage files required for a plate reconstruction model.
👀👇 LOOK HERE!!! 👀👇
Normally you should always use
PlateModelManager.get_model()to get aPlateModelobject. Create aPlateModelobject directly only when you don’t have Internet connection and would like to use the local model files inreadonlymode. Do not create aPlateModelobject directly if you have no idea what’s going on.- create_model_dir()[source]
Ensure the model folder exists and refresh local metadata files.
This method creates
self.model_dirwhen missing, then always rewrites.metadata.jsonandreadme.txtfrom the current in-memory model configuration, even if the folder already exists.
- download_all_layers()[source]
Download all layers. This function calls
download_layer_files()on every available layer.
- download_time_dependent_rasters(raster_name, times=None)[source]
Download time-dependent rasters for a given raster name.
Call
get_avail_time_dependent_raster_names()to see all the available raster names in this model.- Parameters:
raster_name – the raster name of interest
times – if not given, download from begin to end with 1My interval
- get_COBs(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
Continent-Ocean Boundariesfiles.
- get_age_grid(time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for the age grid raster file at a given time.
- get_age_grids(times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for the age grid raster files at given times.
- get_avail_time_dependent_raster_names()[source]
Return all time-dependent raster names in this plate model.
- get_coastlines(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
coastlinesfiles.
- get_continental_polygons(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
continental polygonsfiles.
- get_data_dir()[source]
Return the path to a folder (parent folder of the
model dir) containing a set of downloaded models.
- get_layer(layer_name: str, return_none_if_not_exist: bool = False) List[str] | None[source]
Get a list of layer files by a layer name. Call
get_avail_layers()to get all the available layer names.Raise
LayerNotFoundInModelexception to get user’s attention by default. Setreturn_none_if_not_existtoTrueif you don’t want to see theLayerNotFoundInModelexception.- Parameters:
layer_name – The layer name of interest.
return_none_if_not_exist – If set to
True, returnNonewhen the layer does not exist in the model.
- Returns:
A list of file names or
Noneifreturn_none_if_not_existis set toTrue.
:raises
LayerNotFoundInModel: Raise this exception if the layer name does not exist in this model.
- get_layer_metadata(layer_name: str, return_none_if_not_exist: bool = False) Dict | None[source]
Return metadata for a layer as a dictionary.
In writable mode, this method ensures the layer is downloaded/updated before reading metadata. In readonly mode, it reads from the local layer folder directly.
- Parameters:
layer_name – The layer name of interest.
return_none_if_not_exist – If set to
True, returnNonewhen the layer does not exist in the model.
- Returns:
Layer metadata dictionary, or
Noneifreturn_none_if_not_existis set toTrueand the layer is not found.
- :raises
LayerNotFoundInModel: Raise this exception if the layer name does not exist in this model.
- Raises:
Exception – If the layer metadata file is missing.
- get_raster(raster_name: str, time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for a single time-dependent raster.
The final raster key is built from
raster_nameand optional suffixes fromgenerated_fromandreference_frame(in that order), matching the naming convention used inmodel["TimeDepRasters"].- Parameters:
raster_name – Base raster name in
TimeDepRasters(for example,"AgeGrids").time – Reconstruction time (Ma) to fetch.
reference_frame – Optional reference-frame suffix to append to the raster name.
generated_from – Optional generation-method suffix to append to the raster name.
- Returns:
Local file path for the requested raster at
time.- Raises:
Exception – If this model has no
TimeDepRastersentry, if the constructed raster name is not configured, if the file is missing in readonly mode, or if a download fails in writable mode.
- get_rasters(raster_name: str, times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for a sequence of time-dependent rasters.
The final raster key is built from
raster_nameand optional suffixes fromgenerated_fromandreference_frame(in that order), matching the naming convention used inmodel["TimeDepRasters"].- Parameters:
raster_name – Base raster name in
TimeDepRasters(for example,"AgeGrids").times – Reconstruction times (Ma) to fetch.
reference_frame – Optional reference-frame suffix to append to the raster name.
generated_from – Optional generation-method suffix to append to the raster name.
- Returns:
Local file paths for the requested times, in the same order as
times.- Raises:
Exception – If this model has no
TimeDepRastersentry, if the constructed raster name is not configured, if a requested file is missing in readonly mode, or if a download fails in writable mode.
- get_rotation_model(reference_frame: ReferenceFrame | None = None)[source]
Return rotation files, and optionally a PMAG anchor plate ID.
Rotation files are read from the local model directory in
readonlymode, or downloaded/updated first in writable mode.When
reference_frameisReferenceFrame.PmagReferenceFrame, this method also returns the anchor plate ID required by consumers that need PMAG reference frame rotations. The anchor ID is read frommodel["Attributes"]["PmagReferenceFrameAnchorPID"]when present. If that value is missing but this model is already under PMAG reference frame, set the anchor ID to0, such asmatthews2016_pmag_refmodel.- Parameters:
reference_frame – Optional reference frame for the returned rotation model. (since version 1.4.0)
- Returns:
If
reference_frameis PMAG, returns(rotation_files, anchor_pid)whererotation_filesis a list of.rot/.grotfile paths andanchor_pidis an integer. Otherwise returns onlyrotation_files.- Raises:
Exception – If PMAG is requested but the model is not PMAG and
Attributes.PmagReferenceFrameAnchorPIDis not defined.
- get_spreading_rate_grid(time: int | float, reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) str[source]
Return a local path for the spreading rate grid raster file at a given time.
- get_spreading_rate_grids(times: List[int | float], reference_frame: ReferenceFrame | None = None, generated_from: GenerationMethod | None = None) List[str][source]
Return local paths for the spreading rate grid raster files at given times.
- get_static_polygons(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
static polygonsfiles.
- get_topologies(return_none_if_not_exist: bool = False) List[str] | None[source]
Return a list of
topologiesfiles.
- static is_model_dir(folder_path: str)[source]
Return
Trueif the folder contains files of a plate model, otherwiseFalse.
- property model_dir
Return the folder path for this model under
data_dir.
- class plate_model_manager.PlateModelManager(model_manifest: str = '', timeout=(None, None))[source]
Bases:
objectManage a set of publicly available plate reconstruction models. The model files are hosted on EarthByte servers. You need Internet connection to use this class and download the files.
- download_all_models(data_dir: str = './') None[source]
Download all available models into the
data_dir.- Parameters:
data_dir (str) – The folder to save the model files.
- static get_local_available_model_names(local_dir: str)[source]
Return a list of model names in a local folder.
- Parameters:
local_dir (str) – The local folder containing models.
- get_model(model_name: str = 'default', data_dir: str = '.', reference_frame: ReferenceFrame | None = None) PlateModel | None[source]
Retrieve a
PlateModelobject for a given plate model name.This method resolves model aliases and creates a PlateModel instance configured with the model’s metadata. Alias resolution follows chains and detects circular references to prevent infinite loops.
Call
get_available_model_names()to see a list of available model names and valid aliases.- Parameters:
model_name – The name of the plate model to retrieve. Case-insensitive. Can be a direct model name, an alias, or a variant with reference frame suffix (e.g., “model_pmag_ref”). Defaults to “default”.
data_dir – The folder path to save downloaded plate model files. Defaults to the current directory (“.”); This path can be changed later with
PlateModel.set_data_dir().reference_frame – Optional reference frame for the plate model. If set to
ReferenceFrame.PmagReferenceFrameand a “_pmag_ref” variant exists, that variant will be loaded automatically.
- Returns:
A
PlateModelobject if the model is found and successfully created,Noneif the model name is not found in the manifest.- Raises:
InvalidConfigFile – If a circular alias chain is detected or if the maximum alias resolution depth is exceeded, indicating an error in the model manifest.
- Example:
>>> pmm = PlateModelManager() >>> model = pmm.get_model("muller2016", data_dir="./models") >>> if model: ... model.download_all_layers()
- class plate_model_manager.PresentDayRasterManager(data_dir='present-day-rasters', raster_manifest=None)[source]
Bases:
objectManage the present-day rasters.
- get_raster(_name: str, width=1800, height=800, bbox=[-180, -80, 180, 80], large_file_hint=True)[source]
Download a raster file by name, save the raster file in
self.data_dirand return the local path to the raster file.Call
list_present_day_rasters()to see a list of available present-day raster names.
- plate_model_manager.get_plate_model(model_name: str, data_dir: str | PathLike) PlateModel | None[source]
Convenient function to create a
PlateModelinstance using best effort. First, try to get the plate model withPlateModelManager. If the servers cannot be reached, try to use the local plate model files which were previously downloaded.- Parameters:
model_name – the plate model name of interest
data_dir – The folder to save the plate model files.
- Returns:
a
PlateModelobject orNoneif the plate model name is no good.