Source code for mpas_analysis.shared.regions.compute_region_masks

# This software is open source software available under the BSD-3 license.
#
# Copyright (c) 2022 Triad National Security, LLC. All rights reserved.
# Copyright (c) 2022 Lawrence Livermore National Security, LLC. All rights
# reserved.
# Copyright (c) 2022 UT-Battelle, LLC. All rights reserved.
#
# Additional copyright and license information can be found in the LICENSE file
# distributed with this code, or at
# https://raw.githubusercontent.com/MPAS-Dev/MPAS-Analysis/main/LICENSE

from mpas_analysis.shared.analysis_task import AnalysisTask
from mpas_analysis.shared.regions.compute_region_masks_subtask \
    import ComputeRegionMasksSubtask


[docs] class ComputeRegionMasks(AnalysisTask): """ An analysis tasks for computing cell masks for regions defined by geojson features Attributes ---------- regionMaskSubtasks : dict of ``ComputeRegionMasksSubtask`` objects The subtasks of this task with file names as keys """
[docs] def __init__(self, config, conponentName): """ Construct the analysis task. Parameters ---------- config : mpas_tools.config.MpasConfigParser Configuration options conponentName : str The component to make mapping files for """ # Authors # ------- # Xylar Asay-Davis # first, call the constructor from the base class (AnalysisTask) super(ComputeRegionMasks, self).__init__( config=config, taskName='computeRegionMasks', componentName=conponentName, tags=[]) self.regionMaskSubtasks = {}
def add_mask_subtask(self, regionGroup, obsFileName=None, lonVar='lon', latVar='lat', meshName=None, useMpasMaskCreator=False): """ Construct the analysis task and adds it as a subtask of the ``parentTask``. Parameters ---------- regionGroup : str The name of one of the supported region groups (see :py:func:`mpas_analysis.shared.regions.get_region_mask()`) obsFileName : str, optional The name of an observations file to create masks for. But default, lon/lat are taken from an MPAS restart file lonVar, latVar : str, optional The name of the longitude and latitude variables in ``obsFileName`` meshName : str, optional The name of the mesh or grid, used as part of the mask file name. Default is the MPAS mesh name useMpasMaskCreator : bool, optional If ``True``, the mask creator from ``mpas_tools`` will be used to create the mask. Otherwise, python code is used. Since masks for observations can only be produced with the python code, this option is ignored if obsFileName is not ``None``. """ # Authors # ------- # Xylar Asay-Davis config = self.config if meshName is None: meshName = config.get('input', 'mpasMeshName') key = '{} {}'.format(meshName, regionGroup) if key not in self.regionMaskSubtasks: subprocessCount = config.getint('execute', 'parallelTaskCount') if obsFileName is not None: useMpasMaskCreator = False if useMpasMaskCreator: subprocessCount = 1 maskSubtask = ComputeRegionMasksSubtask( self, regionGroup=regionGroup, meshName=meshName, subprocessCount=subprocessCount, obsFileName=obsFileName, lonVar=lonVar, latVar=latVar, useMpasMaskCreator=useMpasMaskCreator) self.add_subtask(maskSubtask) self.regionMaskSubtasks[key] = maskSubtask return self.regionMaskSubtasks[key]