当前位置: 首页>>代码示例>>Python>>正文


Python BasicHandler.readContext方法代码示例

本文整理汇总了Python中esgcet.config.BasicHandler.readContext方法的典型用法代码示例。如果您正苦于以下问题:Python BasicHandler.readContext方法的具体用法?Python BasicHandler.readContext怎么用?Python BasicHandler.readContext使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在esgcet.config.BasicHandler的用法示例。


在下文中一共展示了BasicHandler.readContext方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: readContext

# 需要导入模块: from esgcet.config import BasicHandler [as 别名]
# 或者: from esgcet.config.BasicHandler import readContext [as 别名]
    def readContext(self, cdfile, model=''):
        "Get a dictionary of keys from an open file"
        result = BasicHandler.readContext(self, cdfile)
        f = cdfile.file

        for key, value in cmorAttributes.items():
            try:
                result[key] = getattr(f, value)
                if key in cmorArrayAttributes and type(result[key]) is numpy.ndarray:
                    res = str(result[key][0])
                    if key=='run_name':
                        if res[0:3]!='run':
                            res = 'run'+res
                    result[key] = res
            except:
                pass

        if 'realization' in result and 'initialization_method' in result and 'physics_version' in result:
            ensemble = 'r%si%sp%s'%(result['realization'], result['initialization_method'], result['physics_version'])
            result['ensemble'] = ensemble
            result['run_name'] = ensemble

        base = os.path.basename(cdfile.path)
        try:
            index = base.index('_')
            varname = base[0:index]
            result['variable'] = varname
        except:
            warning("File path must have the form varname_XXX: %s"%cdfile.path)

        if not result.has_key('product'):
            result['product'] = 'output'

        self.mapEnumeratedValues(result)

        # If realm has multiple fields, pick the first one
        if 'realm' in result:
            realm = result['realm'].strip()
            if realm.find(' ')!=-1:
                realms = realm.split(' ')
                result['realm'] = realms[0]

        # Parse CMOR table.
        if 'table_id' in result:
            tableId = result['table_id']
            fields = tableId.split()

            # Assume table ID has the form 'Table table_id ...'
            if len(fields)>1 and (fields[1] in cmorTables):
                table = fields[1]
                result['cmor_table'] = table
            else:
                result['cmor_table'] = 'noTable'
        else:
            result['cmor_table'] = 'noTable'

        # Parse the product if it is unresolved
        if result['product']=='output':
            cmor_table = result['cmor_table']
            variable = result.get('variable', None)
            experiment = result.get('experiment', None)
            dateRange = self.getDateRangeFromPath()
            year1 = dateRange[0][0]
            year2 = dateRange[1][0]
            if year2 is None:
                year2 = year1
            result['product'] = getProduct(cmor_table, variable, experiment, year1, year2)

        validateDRSFieldValues(result, cdfile)

        return result
开发者ID:gavinmbell,项目名称:esg-publisher,代码行数:73,代码来源:pmip3_handler.py

示例2: readContext

# 需要导入模块: from esgcet.config import BasicHandler [as 别名]
# 或者: from esgcet.config.BasicHandler import readContext [as 别名]
    def readContext(self, cdfile, model=''):
        "Get a dictionary of keys from an open file. The model cannot be determined in general"
        result = BasicHandler.readContext(self, cdfile)
        f = cdfile.file
        
        fnm = os.path.basename(self.path)
        try:
            exp = experiment(f.experiment_id.strip())
        except AttributeError:
            exp = None

        try:
            tableid = f.table_id
            if len(tableid)>=8:
                tbl=f.table_id[6:8]
            else:
                tbl=tableid[0:2]                # CSIRO

            if tbl!='A5':
                var = os.path.split(fnm)[-1].split('_')[0]
            else:
                varflds = os.path.split(fnm)[-1].split('_')
                if len(varflds) in [3,4,9]:       # CCCMA has 9 subfields, 4 for NCAR
                    var = varflds[0]+'_'+varflds[1]
                elif len(varflds)==2:
                    var = varflds[0]
                else:
                    raise ESGPublishError('Cannot determine variable name for file %s'%fnm)
            fqcy = longfreq[frequency(tbl, var)]
            loc = submodel(tbl, var)
        except AttributeError:
            var = None
            fqcy = None
            loc = None

        try:
            rlz='run'+str(f.realization[0])
        except AttributeError:
            rlz = None

        if exp is not None:
            result['experiment'] = exp
        if loc is not None:
            result['submodel'] = loc
        if fqcy is not None:
            result['time_frequency'] = fqcy
        if var is not None:
            result['variable'] = var
        if model is not None:
            result['model'] = model
        if rlz is not None:
            result['run_name'] = rlz

        # Try to determine model from source string
        if model=='' and 'source' in result:
            source = result['source']
            if source[0:7]=='BCC-CM1':
                model = 'bcc_cm1'
            elif source[0:6] == 'BCM2.0':
                model = 'bccr_bcm2_0'
            elif source[0:7] == 'CCSM3.0':
                model = 'ncar_ccsm3_0'
            elif source[0:8] == 'CNRM-CM3':
                model = 'cnrm_cm3'
            elif source[0:6] == 'ECHAM5':
                model = 'mpi_echam5'
            elif source[0:6] == 'ECHO-G':
                model = 'miub_echo_g'
            elif source[0:4] in ['FGCM', 'FGOA']:
                model = 'iap_fgoals1_0_g'
            elif source[0:10] in ['GFDL_CM2.1', 'GFDL_AM2.1']:
                model = 'gfdl_cm2_1'
            elif source[0:10] in ['GFDL_CM2.0', 'GFDL_SM2.0']:
                model = 'gfdl_cm2_0'
            elif source[0:8] == 'GISS AOM':
                model = 'giss_aom'
            elif source[0:6] == 'HadCM3':
                model = 'ukmo_hadcm3'
            elif source[0:7] == 'HadGEM1':
                model = 'ukmo_hadgem1'
            elif source[0:8] == 'INGV-SXG':
                model = 'ingv_echam4'
            elif source[0:8] == 'INMCM3.0':
                model = 'inmcm3_0'
            elif source[0:8] == 'IPSL-CM4':
                model = 'ipsl_cm4'
            elif source[0:9] == 'MRI-CGCM2':
                model = 'mri_cgcm2_3_2a'
            elif source[0:8] == 'Parallel':
                model = 'ncar_pcm1'
            elif source[0:50] == 'CGCM3.1 (2004): atmosphere:  AGCM3 (GCM13d, T47L31':
                model = 'cccma_cgcm3_1'
            elif source[0:50] == 'CGCM3.1 (2004): atmosphere:  AGCM3 (GCM13d, T63L31':
                model = 'cccma_cgcm3_1_t63'
            elif source[0:11] == 'CSIRO Mk3.0':
                model = 'csiro_mk3_0'
            elif source[0:11] == 'CSIRO Mk3.5':
                model = 'csiro_mk3_5'
            elif source[0:49] == 'MIROC3.2 (2004): atmosphere: AGCM (AGCM5.7b, T106':
                model = 'miroc3_2_hires'
#.........这里部分代码省略.........
开发者ID:ESGF,项目名称:esg-publisher,代码行数:103,代码来源:ipcc4_handler.py

示例3: readContext

# 需要导入模块: from esgcet.config import BasicHandler [as 别名]
# 或者: from esgcet.config.BasicHandler import readContext [as 别名]
    def readContext(self, cdfile, model=''):
        "Get a dictionary of keys from an open file"
        result = BasicHandler.readContext(self, cdfile)
        f = cdfile.file

        for key, value in cmorAttributes.items():
            try:
                result[key] = getattr(f, value)
                if key in cmorArrayAttributes and type(result[key]) is numpy.ndarray:
                    res = str(result[key][0])
                    if key=='run_name':
                        if res[0:3]!='run':
                            res = 'run'+res
                    result[key] = res
            except:
                pass

        if 'realization' in result and 'initialization_method' in result and 'physics_version' in result:
            ensemble = 'r%si%sp%s'%(result['realization'], result['initialization_method'], result['physics_version'])
            result['ensemble'] = ensemble
            result['run_name'] = ensemble

        base = os.path.basename(cdfile.path)
        try:
            index = base.index('_')
            varname = base[0:index]
            result['variable'] = varname
        except:
            warning("File path must have the form varname_XXX: %s"%cdfile.path)

        #!WARNING: I think all TAMIP2 data goes into output1
        result['product'] = 'output1'

        self.mapEnumeratedValues(result)

        # If realm has multiple fields, pick the first one
        if 'realm' in result:
            realm = result['realm'].strip()
            if realm.find(' ')!=-1:
                realms = realm.split(' ')
                result['realm'] = realms[0]

        # Parse CMOR table.
        if 'table_id' in result:
            tableId = result['table_id']
            fields = tableId.split()

            # Assume table ID has the form 'Table table_id ...'
            if len(fields)>1 and (fields[1] in cmorTables):
                table = fields[1]
                result['cmor_table'] = table
            else:
                result['cmor_table'] = 'noTable'
        else:
            result['cmor_table'] = 'noTable'


        # Cache a 'drs_id' attribute for DRS-style dataset lookups
        validateDRSFieldValues(result, cdfile)
        if 'product' in result and 'institute' in result and 'model' in result and 'experiment' in result and 'time_frequency' in result and 'realm' in result and 'cmor_table' in result and 'ensemble' in result:
            drsid = '%s.%s.%s.%s.%s.%s.%s.%s.%s'%(DRS_ACTIVITY, result['product'], result['institute'], result['model'], result['experiment'], result['time_frequency'], result['realm'], result['cmor_table'], result['ensemble'])
            result['drs_id'] = drsid
            

        return result
开发者ID:ESGF,项目名称:config,代码行数:67,代码来源:tamip_handler.py

示例4: readContext

# 需要导入模块: from esgcet.config import BasicHandler [as 别名]
# 或者: from esgcet.config.BasicHandler import readContext [as 别名]
    def readContext(self, cdfile, model=""):
        "Get a dictionary of keys from an open file"
        result = BasicHandler.readContext(self, cdfile)
        f = cdfile.file

        for key, value in cmorAttributes.items():
            try:
                result[key] = getattr(f, value)
                if key in cmorArrayAttributes and type(result[key]) is numpy.ndarray:
                    res = str(result[key][0])
                    if key == "run_name":
                        if res[0:3] != "run":
                            res = "run" + res
                    result[key] = res
            except:
                pass

        if "realization" in result and "initialization_method" in result and "physics_version" in result:
            ensemble = "r%si%sp%s" % (result["realization"], result["initialization_method"], result["physics_version"])
            result["ensemble"] = ensemble
            result["run_name"] = ensemble

        base = os.path.basename(cdfile.path)
        try:
            index = base.index("_")
            varname = base[0:index]
            result["variable"] = varname
        except:
            warning("File path must have the form varname_XXX: %s" % cdfile.path)

        #!WARNING: All IPSL-LUCID data goes into output
        result["product"] = "output"

        self.mapEnumeratedValues(result)

        # If realm has multiple fields, pick the first one
        if "realm" in result:
            realm = result["realm"].strip()
            if realm.find(" ") != -1:
                realms = realm.split(" ")
                result["realm"] = realms[0]

        # Parse CMOR table.
        if "table_id" in result:
            tableId = result["table_id"]
            fields = tableId.split()

            # Assume table ID has the form 'Table table_id ...'
            if len(fields) > 1 and (fields[1] in cmorTables):
                table = fields[1]
                result["cmor_table"] = table
            else:
                result["cmor_table"] = "noTable"
        else:
            result["cmor_table"] = "noTable"

        # Cache a 'drs_id' attribute for DRS-style dataset lookups
        validateDRSFieldValues(result, cdfile)
        if (
            "product" in result
            and "institute" in result
            and "model" in result
            and "experiment" in result
            and "time_frequency" in result
            and "realm" in result
            and "cmor_table" in result
            and "ensemble" in result
        ):
            drsid = "%s.%s.%s.%s.%s.%s.%s.%s.%s" % (
                DRS_ACTIVITY,
                result["product"],
                result["institute"],
                result["model"],
                result["experiment"],
                result["time_frequency"],
                result["realm"],
                result["cmor_table"],
                result["ensemble"],
            )
            result["drs_id"] = drsid

        return result
开发者ID:ESGF,项目名称:config,代码行数:84,代码来源:lucid_handler.py


注:本文中的esgcet.config.BasicHandler.readContext方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。