Newer
Older
if count >= self.config.cmor.min_cmorized_vars:
return True
return False
class CMIP6Convention(Cmor3Convention):
class PrimaveraConvention(Cmor3Convention):
class MeteoFranceConvention(DataConvention):
def get_file_name(
self,
startdate,
member,
domain,
var,
cmor_var,
frequency,
chunk,
year,
date_str,
grid,
):
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
"""
Get filename for a given configuration
Parameters
----------
startdate: str
member: int
domain: ModelingRealm
var: str
cmor_var: Variable
frequency: Frequency
chunk: int or None
year: int or None
date_str: str or None
grid: str or None
Returns
-------
str
"""
raise ValueError("Year not supported with MeteoFrance convention")
raise ValueError(
"Date_str not supported with MeteoFrance convention"
)
raise ValueError(
"Chunk must be provided in MeteoFrance convention"
)
time_bound = self._get_chunk_time_bounds(startdate, chunk, frequency)
file_name = "{0}_{1}_{2}_{3}.nc".format(
var, frequency, time_bound, self.get_member_str(member)
)
def get_cmor_folder_path(
self, startdate, member, domain, var, frequency, grid, cmor_var
):
folder_path = os.path.join(
self.config.data_dir,
self.experiment_name(startdate),
"H{0}".format(chr(64 + int(startdate[4:6]))),
startdate[0:4],
)
return folder_path
def get_member_str(self, member):
"""
Transalate member number to member string
Parameters
----------
member: int
Returns
-------
str
"""
def _get_chunk_time_bounds(self, startdate, chunk, frequency):
chunk_start = chunk_start_date(
start,
chunk,
self.config.experiment.chunk_size,
"month",
self.config.experiment.calendar,
)
time_bound = "{0:04}{1:02}".format(chunk_start.year, chunk_start.month)
return time_bound
def create_link(
self, domain, filepath, frequency, var, grid, move_old, vartype
):
"""
Create file link
In this convention, it does nothing
Parameters
----------
domain: ModelingRealm
filepath: str
frequency: Frequency
var: str
grid: str
move_old: bool
vartype: VariableType
"""
pass
def create_links(self, startdate, member=None):
"""
Create links for a given startdate or member
In this convention, it does nothing
Parameters
----------
startdate: str
member: int or None
"""
pass
def is_cmorized(self, startdate, member, chunk, domain):
"""
Check if a given chunk is cmorized for a given domain
Parameters
----------
startdate: str
member: str
chunk: int
domain: ModelingRealm
Returns
-------
bool
Raises
------
NotImplementedError:
If not implemented by the derived classes
"""