.. _geotable-py: ########### geotable.py ########### :: >>> from simo.builder.modelbase.modelbase import ModelbaseDef >>> tdf = open('../../simulator/xml/schemas/Typedefs_SIMO.xsd') >>> typedef = tdf.read() >>> tdf.close() >>> sf = open('../../simulator/xml/schemas/geo_table.xsd') >>> schema = sf.read() >>> sf.close() >>> xml = u''' ... ... test.latlonarray ... 21.0 ... 61.0 ... 3 ... 3 ... 0.5 ... 0.5 ... 1 ... ... ... GEO_X ... comp_unit ... ... ... GEO_Y ... comp_unit ... ... ... ... ... ALT ... comp_unit ... ... ... ... ... ''' >>> class Validator(object): ... def add_error(msg): ... print msg >>> class Lexicon(object): ... def __init__(self): ... self.models = {} ... def get_variable_ind(self, level, variable, active=False): ... if variable == 'GEO_X': ... return (1,1) ... elif variable == 'GEO_Y': ... return (1,2) ... elif variable == 'ALT': ... return (1,3) ... elif variable == 'TS': ... return (1,4) ... def get_level_ind(self, level): ... return 1 ... def add_model(self, mtype, mname): ... if mtype not in self.models: ... self.models[mtype] = set() ... self.models[mtype].add(mname) >>> mb = ModelbaseDef(typedef) >>> mb.schema = ('geo_table', schema) >>> mb.xml = ('testxml', xml, Lexicon(), ... ['./builder/modelbase/test/data'], 'geo_table') >>> mb.xml['geo_table']['testxml'][:11] u'>> gt = mb.obj['geo_table']['testxml']['dem'] >>> gt.load_function(Validator()) >>> gt.dirs ['./builder/modelbase/test/data'] >>> gt.filename 'test.latlonarray' >>> gt.type 'geo_table' >>> gt.ulx 21.0 >>> gt.longitude_var (1, 1) >>> gt.latitude_var (1, 2) >>> # the array is 3*3, values from 100 to 108 >>> gt.arr[0,2,0] 108.0 >>> gt.arr[2,0,0] 100.0 >>> gt.targets [(1, 3)] def __get_coord_var(self, ns, celem): ===================================== Coordinate variable definition to data matrix indices def __read_geo_array(self): =========================== Reads the geo array data from disk into a numpy array **************************** class GeoTableParam(object): **************************** Extracts geo table model parameters defined in the model chain Attributes: - get_all: boolean for returning all the variables found in the table - result_variables: only a subset of table variables are returned: a list of: - dictionary having keys 'variable' and 'level' having variable index and level index in the data matrix as values def __init__(self, ns, elem, variable_ind, model): ================================================== Constructs the geo table parameter definition object based on the XML element. If result variables are listed, validates the variables using passed the lexicon method instance. Invalid result variables defined in model chain parameters:: >>> execfile('builder/modelbase/test/mocktask.py') >>> from lxml import etree >>> from simo.builder.modelbase.geotable import GeoTableParam >>> pelem = etree.XML(''' ... ... ... TS ... comp_unit ... ... ... ''') >>> param = GeoTableParam('', pelem, task, gt) >>> task.validator.errors # doctest: +NORMALIZE_WHITESPACE set(["variable 'TS' at level 'comp_unit' is not a target variable for geo table 'dem'"])