Changeset 397


Ignore:
Timestamp:
04/10/15 19:20:58 (4 years ago)
Author:
mjuckes
Message:

various

Location:
CMIP6dreqbuild/trunk
Files:
4 added
16 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/docs/dreq.txt

    r382 r397  
    11##  
     2vocab experiment; Experiments; cmip.drv.001; def; 0; 1; No 
     3 - uuid {Record identifier} <recordId> 
     4 - description {Description} <freeText> 
     5 - egid  {Identifier for experiment group} <internalLink> 
     6 - mip {MIP defining experiment} 
     7 - mcfg {Model category} 
     8 - tier {Tier of experiment} 
     9 - nstart {Number of start dates} [xs:integer] 
     10 - starty 
     11 - endy 
     12 - yps {Years per simulation} [xs:integer] 
     13 - ensz {Ensemble size} [xs:integer] 
     14 - ntot {Total number of years} [xs:integer] 
     15 - comment {Comment} 
     16vocab exptgroup; Experiment Group; cmip.drv.001; def; 0; 1; No 
     17 - uuid {Record identifier} <recordId> 
     18 - tierMin {Minimum tier of experiments in group}  [xs:integer] 
     19 - ntot {Total number of years} [xs:integer] 
     20vocab objective; Scientific objectives; cmip.drv.001; def; 0; 1; No 
     21 - uuid {Record identifier} <recordId> 
     22 - description {Description} <freeText> 
     23 - title {Long name} 
     24 - mip {Endorsed MIP} 
     25vocab objectiveLink; Link between scientific objectives and requests; cmip.drv.001; def; 0; 1; No 
     26 - uuid {Record identifier} <recordId> 
     27 - oid  {Identifier for a scientific objective} <internalLink|objective> 
     28 - rid  {Identifier for a request link} <internalLink|requestLink> 
    229vocab var; MIP Variable; cmip.drv.001; def; 0; 1; No 
    330 - sn {CF Standard Name} <externalTextRef>; units {Units}; description;  
     
    1845 - gpid {Variable group/table} <internalLink> 
    1946 - rowIndex {Row index of entry in source sheet} [xs:integer] 
     47 - priority {Priority} [xs:integer] 
    2048##  
    21 vocab tableSection; CMOR Table Sections; cmip.drv.001; def; 1; 1; No 
    22  - uuid <recordId> 
    23  - gpid {Identifier for CMOR Tables} <internalLink|requestVarGroup> 
    24  - mip {Project} 
    25  - ref 
    26  - refNote 
    27 ###  'uuid', 'gpid', 'mip', 'label','title','ref','refNote' 
    28 ## 
    2949vocab groupItem; Output Group Item; cmip.drv.001; def; 2; 1; No 
    3050 - group;   
     
    4868 - vgid {Identifier for Variable Group} <internalLink|requestVarGroup> 
    4969##   
     70vocab tableSection; CMOR Table Sections; cmip.drv.001; def; 1; 1; No 
     71 - uuid <recordId> 
     72 - gpid {Identifier for CMOR Tables} <internalLink|requestVarGroup> 
     73 - mip {Project} 
     74 - ref 
     75 - refNote 
     76## 
    5077vocab requestVarGroup; Request link: linking a set of variables; cmip.drv.001; def; 3; 1; Yes 
    5178 - uuid <recordId> 
  • CMIP6dreqbuild/trunk/docs/vocab.txt

    r375 r397  
    44 - isni {International Standard Name Identifier (ISO 27729)} 
    55 - description 
    6  - uuid 
     6 - uid 
    77## vsf=v 
    88vocab model; Model; cmip.drv.002; def; 0; 1; Yes 
    99 - description; url; altUrl; source {List of major model components} 
    10  - uuid 
     10 - uid 
    1111## vsf=v 
    1212vocab physicsvers; Physics Version; cmip.drv.003; def; 0; 1; Yes 
    1313 - description 
    14  - uuid 
     14 - uid 
    1515## vsf=v 
    1616vocab initialisationmethod; Initialisation Method; cmip.drv.004; def; 0; 1; Yes 
    1717 - description 
    18  - uuid 
     18 - uid 
    1919## vsf=- 
    2020vocab modelComp; Model Components; cmip.drv.004; def; 0; 1; Yes 
    2121 - componentType; sizeH; sizeV 
    22  - uuid 
     22 - uid 
    2323## vsf=v 
    2424vocab activity; Coordinating activity; cmip.drv.004; def; 0; 1; Yes 
    2525 - url 
    2626 - status {Status and role within the CMIP6 process} 
    27  - uuid 
     27 - uid 
    2828## vsf=f 
    2929vocab product; Data product; cmip.drv.004; def; 0; 1; Yes 
    30  - uuid 
     30 - uid 
    3131## vsf=v 
    3232vocab experiment; Numerical Experiment; cmip.drv.004; def; 0; 1; Yes 
    3333 - altLabel; description; url; sponsor 
    34  - uuid 
     34 - uid 
    3535## vsf=s 
    3636vocab frequency; Temporal frequency of data values; cmip.drv.004; def; 0; 1; Yes 
    3737 - iso 
    38  - uuid 
     38 - uid 
    3939## vsf=f 
    4040vocab realm; Modeling realm; cmip.drv.004; def; 0; 1; Yes 
    41  - uuid 
     41 - uid 
    4242## vsf=s 
    4343vocab grid; Native grid; cmip.drv.004; def; 0; 1; Yes 
    44  - uuid 
     44 - uid 
    4545## vsf=s 
    4646vocab dimensions; MIP table variable dimensions; cmip.drv.008; an; 0; 1; Yes 
    4747 - altLabel; sn; size [xs:integer] 
    48  - uuid 
     48 - uid 
    4949## vsf=v 
    5050vocab forcings; Forcing; cmip.drv.004; def; 0; 1; Yes 
    51  - uuid 
     51 - uid 
    5252## vsf=s 
    5353vocab table; Data specification table; cmip.drv.004; def; 0; 1; Yes 
    5454 - description; comment; frequency 
    55  - uuid 
     55 - uid 
    5656## vsf=s 
    5757vocab cref; Coordinate Reference; cmip.drv.004; def; 0; 1; Yes 
    5858 - label 
    59  - uuid 
     59 - uid 
    6060## vsf=f 
    6161vocab areaType; CMIP Area Type; cmip.drv.004; def; 0; 1; Yes 
    6262 - inCF 
    63  - uuid 
     63 - uid 
    6464## vsf=s 
    6565vocab timeSlice; Time slices used in data request; cmip.drv.004; def; 0; 1; Yes 
    6666 - type; specification 
    67  - uuid 
     67 - uid 
    6868vocab modelFamily; Family of model; cmip.drv.004; def; 0; 1; Yes 
    69  - uuid 
     69 - uid 
    7070vocab priority; Variable priority; cmip.drv.004; int; 0; 1; Yes 
    7171 - description 
    72  - uuid 
     72 - uid 
    7373vocab qcLevel; Quality control level; cmip.drv.004; int; 0; 1; Yes 
    74  - uuid 
     74 - uid 
    7575vocab complianceCode; Data specification compliance codes; cmip.drv.004; def; 0; 1; Yes 
    76  - uuid 
     76 - uid 
    7777vocab glossary; Glossary; cmip.drv.004; def; 0; 1; No 
    7878 - fullName; description; url 
    79  - uuid 
     79 - uid 
    8080vocab modelCompType; Model Component Types/Categories [redundant with *Native Grid*]; cmip.drv.004; def; 0; 1; Yes 
    81  - uuid 
     81 - uid 
    8282vocab modelType; Class of model; cmip.drv.004; def; 0; 1; Yes 
    83  - uuid 
     83 - uid 
    8484vocab index; Index of vocabularies; xxx; def; 0; 1; Yes 
    8585 - table; title; description 
    86  - uuid 
     86 - uid 
    8787vocab cmorDimAttr; CMOR Dimension Attributes; cmip.drv.004; und; 0; 1; Yes 
    8888 - description 
    89  - uuid 
     89 - uid 
    9090 - CMORattr {Corresponding label in the CMOR MIP tables, if different} 
    9191vocab processingOptions; Processing steps required; cmip.drv.004; an; 0; 1; Yes 
    9292 - description 
    93  - uuid 
     93 - uid 
     94vocab coordinateReference; Processing steps required; cmip.drv.004; an; 0; 1; Yes 
     95 - title 
     96 - ogc_wkt 
     97 - url 
     98 - uid 
  • CMIP6dreqbuild/trunk/docs/vocabFrameworkSchema.xsd

    r370 r397  
    11<?xml version="1.0" encoding="ISO-8859-1" ?> 
    22<xs:schema  
    3 targetNamespace="uri:w3id.org:cmip6.dreq.framework:a" 
    4 xmlns="uri:w3id.org:cmip6.dreq.framework:a" 
     3targetNamespace="urn:w3id.org:cmip6.dreq.framework:a" 
     4xmlns="urn:w3id.org:cmip6.dreq.framework:a" 
    55xmlns:xs="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified"> 
    66<!-- Declarations --> 
     
    3636  <xs:attribute name="label" type="xs:string" use="required"/> 
    3737  <xs:attribute name="title" type="xs:string"/> 
     38  <xs:attribute name="uid" type="xs:string"/> 
    3839  <xs:attribute name="level" type="xs:integer"/> 
    3940  <xs:attribute name="id" type="xs:string"/> 
  • CMIP6dreqbuild/trunk/docs/xlst_xdsSchemaGen.xml

    r382 r397  
    33<xsl:stylesheet version="1.0" 
    44xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    5 xmlns:a="uri:w3id.org:cmip6.dreq.framework:a" 
     5xmlns:a="urn:w3id.org:cmip6.dreq.framework:a" 
    66xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    77xmlns:xd="http://www.pnp-software.com/XSLTdoc"> 
     
    3030 
    3131<xsl:template match="a:defDoc"> 
    32 <xs:schema targetNamespace="uri:w3id.org:cmip6.dreq.dreq:a" xmlns="uri:w3id.org:cmip6.dreq.dreq:a" xmlns:xs="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified"><xsl:text>&#xa;</xsl:text> 
     32<xs:schema targetNamespace="urn:w3id.org:cmip6.dreq.dreq:a" 
     33xmlns:dc="http://purl.org/dc/elements/1.1/" 
     34xmlns:aa="urn:w3id.org:cmip6.dreq.dreq:a" xmlns:xs="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified"><xsl:text>&#xa;</xsl:text> 
     35<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="dc1.xsd" /><xsl:text>&#xa;</xsl:text> 
    3336 
    3437<!-- generic type definitions --> 
     
    7477  </xs:annotation><xsl:text>&#xa;</xsl:text> 
    7578 
    76   <xs:element name="main"> 
    77     <xs:complexType> 
    78       <xs:all><xsl:text>&#xa;</xsl:text> 
    79          <xsl:apply-templates mode="main"/>   
    80       </xs:all> 
    81     </xs:complexType><xsl:text>&#xa;</xsl:text> 
    82   <xs:unique name="uniqueIdentifierConstraint"> 
    83   <xs:annotation> 
    84     <xs:appinfo>W3Schools Note</xs:appinfo> 
    85     <xs:documentation xml:lang="en"> 
    86        The uniqueIdentifierConstraint imposes the condition that the uuid attribute on "item" elements should have a unique value. 
    87     </xs:documentation> 
    88   </xs:annotation><xsl:text>&#xa;</xsl:text> 
    89     <xs:selector xpath=".//item"/> 
    90     <xs:field xpath="@uuid"/> 
    91   </xs:unique><xsl:text>&#xa;</xsl:text> 
    92   </xs:element><xsl:text>&#xa;</xsl:text> 
     79  <xs:element name="document"><xs:complexType><xs:all> 
     80    <xs:element name="prologue"> 
     81        <xs:complexType> 
     82          <xs:group ref="dc:elementsGroup" maxOccurs="20"/> 
     83        </xs:complexType> 
     84    </xs:element> 
     85    <xs:element name="main"> 
     86      <xs:complexType> 
     87        <xs:all><xsl:text>&#xa;</xsl:text> 
     88           <xsl:apply-templates mode="main"/>   
     89        </xs:all> 
     90      </xs:complexType><xsl:text>&#xa;</xsl:text> 
     91      <xs:unique name="uniqueIdentifierConstraint"> 
     92        <xs:annotation> 
     93          <xs:appinfo>W3Schools Note</xs:appinfo> 
     94        <xs:documentation xml:lang="en"> 
     95       The uniqueIdentifierConstraint imposes the condition that the uid attribute on "item" elements should have a unique value. 
     96        </xs:documentation> 
     97        </xs:annotation><xsl:text>&#xa;</xsl:text> 
     98          <xs:selector xpath=".//aa:item"/> 
     99          <xs:field xpath="@uid"/> 
     100      </xs:unique><xsl:text>&#xa;</xsl:text> 
     101    </xs:element><xsl:text>&#xa;</xsl:text> 
     102  </xs:all> 
     103  </xs:complexType> 
     104  </xs:element> 
    93105 
    94106</xs:schema> 
     
    104116</xd:doc> 
    105117<xsl:template match="a:table" mode="main"> 
    106    <xsl:comment>[applying elem main]</xsl:comment><xsl:text>&#xa;</xsl:text> 
     118   <xsl:comment>[applying elem main] <xsl:value-of select="@label"/></xsl:comment><xsl:text>&#xa;</xsl:text> 
    107119   <xs:element> 
    108120     <xsl:attribute name="name"><xsl:value-of select="@label"/></xsl:attribute> 
    109      <xsl:attribute name="type">ct__<xsl:value-of select="@label"/></xsl:attribute> 
     121     <xsl:attribute name="type">aa:ct__<xsl:value-of select="@label"/></xsl:attribute> 
    110122   </xs:element><xsl:text>&#xa;</xsl:text> 
    111123</xsl:template> 
     
    132144           <!-- <xs:element name="info" type="ct__info"/> --> 
    133145           <xs:element name="item" maxOccurs="8000"> 
    134            <xsl:attribute name="type">ct__<xsl:value-of select="@label"/>_vocabItem</xsl:attribute> 
     146           <xsl:attribute name="type">aa:ct__<xsl:value-of select="@label"/>_vocabItem</xsl:attribute> 
    135147           </xs:element> 
    136148        </xs:sequence><xsl:text>&#xa;</xsl:text> 
     
    145157        </xs:attribute><xsl:text>&#xa;</xsl:text> 
    146158        <xs:attribute name="class" fixed="vocab"/><xsl:text>&#xa;</xsl:text> 
    147         <xs:attribute name="uuid" type="xs:string"/><xsl:text>&#xa;</xsl:text> 
     159        <xs:attribute name="uid" type="xs:string"/><xsl:text>&#xa;</xsl:text> 
    148160    </xs:complexType><xsl:text>&#xa;</xsl:text> 
    149161 
     
    160172        <xs:attribute name="id" type="xs:string"/><xsl:text>&#xa;</xsl:text> 
    161173        <xs:attribute name="label"> 
    162             <xsl:attribute name="type">st__attLabel_<xsl:value-of select="@itemLabelMode"/></xsl:attribute> 
     174            <xsl:attribute name="type">aa:st__attLabel_<xsl:value-of select="@itemLabelMode"/></xsl:attribute> 
    163175        </xs:attribute><xsl:text>&#xa;</xsl:text> 
    164176        <xs:attribute name="title" type="xs:string"/> 
  • CMIP6dreqbuild/trunk/src/framework/dreq.py

    r393 r397  
    5959             if a[0] != '_' or full: 
    6060               if self._a[a].rClass == 'internalLink' and self._base._indexInitialised: 
    61                  targ = self._base._inx.uid[ self.__dict__[a] ][1] 
     61                 targ = self._base._inx.uid[ self.__dict__[a] ] 
    6262                 print '   %s: [%s]%s [%s]' % ( a, targ._h.label, targ.label, self.__dict__[a] ) 
    6363               else: 
     
    9090                   m = '<li>%s: %s [missing link]</li>' % ( a, self.__dict__[a] ) 
    9191                 else: 
    92                    targ = self._base._inx.uid[ self.__dict__[a] ][1] 
     92                   targ = self._base._inx.uid[ self.__dict__[a] ] 
    9393                   m = '<li>%s: [%s] %s [%s]</li>' % ( a, targ._h.label, targ.label, targ.__href__() ) 
    9494               else: 
     
    113113                   am.append( '<h3>%s</h3>' % t ) 
    114114                   am.append( '<ul>' ) 
    115                    items = [self._inx.uid[u][1] for  u in self._inx.iref_by_sect[self.uid].a[t] ] 
     115                   items = [self._inx.uid[u] for  u in self._inx.iref_by_sect[self.uid].a[t] ] 
    116116                   items.sort( ds('label').cmp ) 
    117117                   for targ in items: 
     
    160160         for a,tv,v in tvtl: 
    161161           if tv: 
    162              if self._a[a].type == u'xs:integer': 
     162             if self._a[a].type == u'xs:float': 
     163               try: 
     164                 v = float(v) 
     165               except: 
     166                 print 'Failed to convert real number: %s' % v 
     167                 raise 
     168             elif self._a[a].type == u'xs:integer': 
    163169               if self._rc.isIntStr( v ): 
    164170                 v = int(v) 
     
    244250      tables[t[0].label] = t 
    245251      self.tableClasses[t[0].label] = self.itemClassFact( t, ns=self.ns ) 
    246  
    247252 
    248253    self.recordAttributeDefn = tables 
     
    314319object._a: a python dictionary defining the attributes in each record. The keys in the dictionary correspond to the attribute names and the values are python "named tuples" (from the "collections" module). E.g. object._a['priority'].type contains the type of the 'priority' attribute. Type is expressed using XSD schema language, so "xs:integer" implies integer.  The "rClass" attribute carries information about usage. If object._a['xxx'].rClass = u'internalLink' then the record attribute provides a link to another element and object.xxx is the unique identifier of that element. 
    315320 
    316 object._h: a python named tuple describing the section. E.g. object.parent.header.title is the section title (E.g. "CMOR Variables") 
     321object._h: a python named tuple describing the section. E.g. object._h.title is the section title (E.g. "CMOR Variables") 
    317322""" 
    318323       _base=dreqItemBase 
    319324        
     325     dreqItem.__name__ = 'dreqItem_%s' % str( sectionInfo.header.label ) 
    320326     dreqItem._h = sectionInfo.header 
    321327     dreqItem._a = sectionInfo.attributes 
     
    404410            self.uid2[i.uid].append( (k,i) ) 
    405411          else: 
    406             self.uid[i.uid] = (None,i) 
     412### create index bx uid. 
     413            self.uid[i.uid] = i 
    407414 
    408415    self.missingIds = collections.defaultdict( list ) 
     
    469476##    dreqItemBase._htmlStyle['__general__'] = {'addRemarks':True} 
    470477 
    471     self.pageTmpl = """<html><head><title>%s</title></head><body>%s</body></html>""" 
     478    self.pageTmpl = """<html><head><title>%s</title> 
     479<link rel="stylesheet" type="text/css" href="%scss/dreq.css"> 
     480</head><body> 
     481<div id="top">CMIP6 Data Request</div> 
     482%s</body></html>""" 
    472483 
    473484  def makeHtml(self,odir='./html'): 
    474485    for k in self.inx.uid.keys(): 
    475       i = self.inx.uid[k][1] 
     486      i = self.inx.uid[k] 
    476487      ttl = 'Data Request Record: [%s]%s' % (i._h.label,i.label) 
    477488      bdy = string.join( i.__html__( ), '\n' ) 
    478489      oo = open( '%s/u/%s.html' % (odir,i.uid), 'w' ) 
    479       oo.write( self.pageTmpl % (ttl, bdy ) ) 
     490      oo.write( self.pageTmpl % (ttl, '../', bdy ) ) 
    480491      oo.close() 
    481492 
     
    498509      bdy = string.join( msg, '\n' ) 
    499510      oo = open( '%s/index/%s.html' % (odir,k), 'w' ) 
    500       oo.write( self.pageTmpl % (ttl, bdy ) ) 
     511      oo.write( self.pageTmpl % (ttl, '../', bdy ) ) 
    501512      oo.close() 
    502513    msg0.append( '</ul>' ) 
    503514    bdy = string.join( msg0, '\n' ) 
    504515    oo = open( '%s/index.html' % odir, 'w' ) 
    505     oo.write( self.pageTmpl % (ttl, bdy ) ) 
     516    oo.write( self.pageTmpl % (ttl0, '', bdy ) ) 
    506517    oo.close() 
    507518     
  • CMIP6dreqbuild/trunk/src/framework/out/vocabDefn.xml

    r382 r397  
    22<defDoc  
    33xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    4 xmlns="uri:w3id.org:cmip6.dreq.framework:a" 
     4xmlns="urn:w3id.org:cmip6.dreq.framework:a" 
    55xsi:schemaLocation="http://w3id.org/cmip6dr/ns vocabFrameworkSchema_v01beta.xsd"> 
    6 <table label="institute" title="Institute" id="cmip.drv.001" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    7   <rowAttribute label="label"/> 
    8   <rowAttribute label="title"/> 
     6<table label="institute" uid="SECTION:institute" title="Institute" id="cmip.drv.001" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     7  <rowAttribute label="label" title="Record Label"/> 
     8  <rowAttribute label="title" title="Record Title"/> 
    99  <rowAttribute label="url" title="Home page"/> 
    1010  <rowAttribute label="isni" title="International Standard Name Identifier (ISO 27729)"/> 
    1111  <rowAttribute label="description"/> 
    12   <rowAttribute label="uuid"/> 
     12  <rowAttribute label="uid"/> 
    1313</table> 
    14 <table label="model" title="Model" id="cmip.drv.002" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    15   <rowAttribute label="label"/> 
    16   <rowAttribute label="title"/> 
     14<table label="model" uid="SECTION:model" title="Model" id="cmip.drv.002" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     15  <rowAttribute label="label" title="Record Label"/> 
     16  <rowAttribute label="title" title="Record Title"/> 
    1717  <rowAttribute label="description"/> 
    1818  <rowAttribute label="url"/> 
    1919  <rowAttribute label="altUrl"/> 
    2020  <rowAttribute label="source" title="List of major model components"/> 
    21   <rowAttribute label="uuid"/> 
     21  <rowAttribute label="uid"/> 
    2222</table> 
    23 <table label="physicsvers" title="Physics Version" id="cmip.drv.003" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    24   <rowAttribute label="label"/> 
    25   <rowAttribute label="title"/> 
     23<table label="physicsvers" uid="SECTION:physicsvers" title="Physics Version" id="cmip.drv.003" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     24  <rowAttribute label="label" title="Record Label"/> 
     25  <rowAttribute label="title" title="Record Title"/> 
    2626  <rowAttribute label="description"/> 
    27   <rowAttribute label="uuid"/> 
     27  <rowAttribute label="uid"/> 
    2828</table> 
    29 <table label="initialisationmethod" title="Initialisation Method" id="cmip.drv.004" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    30   <rowAttribute label="label"/> 
    31   <rowAttribute label="title"/> 
     29<table label="initialisationmethod" uid="SECTION:initialisationmethod" title="Initialisation Method" id="cmip.drv.004" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     30  <rowAttribute label="label" title="Record Label"/> 
     31  <rowAttribute label="title" title="Record Title"/> 
    3232  <rowAttribute label="description"/> 
    33   <rowAttribute label="uuid"/> 
     33  <rowAttribute label="uid"/> 
    3434</table> 
    35 <table label="modelComp" title="Model Components" id="cmip.drv.005" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    36   <rowAttribute label="label"/> 
    37   <rowAttribute label="title"/> 
     35<table label="modelComp" uid="SECTION:modelComp" title="Model Components" id="cmip.drv.005" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     36  <rowAttribute label="label" title="Record Label"/> 
     37  <rowAttribute label="title" title="Record Title"/> 
    3838  <rowAttribute label="componentType"/> 
    3939  <rowAttribute label="sizeH"/> 
    4040  <rowAttribute label="sizeV"/> 
    41   <rowAttribute label="uuid"/> 
     41  <rowAttribute label="uid"/> 
    4242</table> 
    43 <table label="activity" title="Coordinating activity" id="cmip.drv.006" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    44   <rowAttribute label="label"/> 
    45   <rowAttribute label="title"/> 
     43<table label="activity" uid="SECTION:activity" title="Coordinating activity" id="cmip.drv.006" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     44  <rowAttribute label="label" title="Record Label"/> 
     45  <rowAttribute label="title" title="Record Title"/> 
    4646  <rowAttribute label="url"/> 
    4747  <rowAttribute label="status" title="Status and role within the CMIP6 process"/> 
    48   <rowAttribute label="uuid"/> 
     48  <rowAttribute label="uid"/> 
    4949</table> 
    50 <table label="product" title="Data product" id="cmip.drv.007" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    51   <rowAttribute label="label"/> 
    52   <rowAttribute label="title"/> 
    53   <rowAttribute label="uuid"/> 
     50<table label="product" uid="SECTION:product" title="Data product" id="cmip.drv.007" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     51  <rowAttribute label="label" title="Record Label"/> 
     52  <rowAttribute label="title" title="Record Title"/> 
     53  <rowAttribute label="uid"/> 
    5454</table> 
    55 <table label="experiment" title="Numerical Experiment" id="cmip.drv.008" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    56   <rowAttribute label="label"/> 
    57   <rowAttribute label="title"/> 
     55<table label="experiment" uid="SECTION:experiment" title="Numerical Experiment" id="cmip.drv.008" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     56  <rowAttribute label="label" title="Record Label"/> 
     57  <rowAttribute label="title" title="Record Title"/> 
    5858  <rowAttribute label="altLabel"/> 
    5959  <rowAttribute label="description"/> 
    6060  <rowAttribute label="url"/> 
    6161  <rowAttribute label="sponsor"/> 
    62   <rowAttribute label="uuid"/> 
     62  <rowAttribute label="uid"/> 
    6363</table> 
    64 <table label="frequency" title="Temporal frequency of data values" id="cmip.drv.009" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    65   <rowAttribute label="label"/> 
    66   <rowAttribute label="title"/> 
     64<table label="frequency" uid="SECTION:frequency" title="Temporal frequency of data values" id="cmip.drv.009" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     65  <rowAttribute label="label" title="Record Label"/> 
     66  <rowAttribute label="title" title="Record Title"/> 
    6767  <rowAttribute label="iso"/> 
    68   <rowAttribute label="uuid"/> 
     68  <rowAttribute label="uid"/> 
    6969</table> 
    70 <table label="realm" title="Modeling realm" id="cmip.drv.010" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    71   <rowAttribute label="label"/> 
    72   <rowAttribute label="title"/> 
    73   <rowAttribute label="uuid"/> 
     70<table label="realm" uid="SECTION:realm" title="Modeling realm" id="cmip.drv.010" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     71  <rowAttribute label="label" title="Record Label"/> 
     72  <rowAttribute label="title" title="Record Title"/> 
     73  <rowAttribute label="uid"/> 
    7474</table> 
    75 <table label="grid" title="Native grid" id="cmip.drv.011" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    76   <rowAttribute label="label"/> 
    77   <rowAttribute label="title"/> 
    78   <rowAttribute label="uuid"/> 
     75<table label="grid" uid="SECTION:grid" title="Native grid" id="cmip.drv.011" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     76  <rowAttribute label="label" title="Record Label"/> 
     77  <rowAttribute label="title" title="Record Title"/> 
     78  <rowAttribute label="uid"/> 
    7979</table> 
    80 <table label="dimensions" title="MIP table variable dimensions" id="cmip.drv.012" itemLabelMode="an" level="0" maxOccurs="1" labUnique="Yes"> 
    81   <rowAttribute label="label"/> 
    82   <rowAttribute label="title"/> 
     80<table label="dimensions" uid="SECTION:dimensions" title="MIP table variable dimensions" id="cmip.drv.012" itemLabelMode="an" level="0" maxOccurs="1" labUnique="Yes"> 
     81  <rowAttribute label="label" title="Record Label"/> 
     82  <rowAttribute label="title" title="Record Title"/> 
    8383  <rowAttribute label="altLabel"/> 
    8484  <rowAttribute label="sn"/> 
    8585  <rowAttribute label="size" type="xs:integer"/> 
    86   <rowAttribute label="uuid"/> 
     86  <rowAttribute label="uid"/> 
    8787</table> 
    88 <table label="forcings" title="Forcing" id="cmip.drv.013" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    89   <rowAttribute label="label"/> 
    90   <rowAttribute label="title"/> 
    91   <rowAttribute label="uuid"/> 
     88<table label="forcings" uid="SECTION:forcings" title="Forcing" id="cmip.drv.013" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     89  <rowAttribute label="label" title="Record Label"/> 
     90  <rowAttribute label="title" title="Record Title"/> 
     91  <rowAttribute label="uid"/> 
    9292</table> 
    93 <table label="table" title="Data specification table" id="cmip.drv.014" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    94   <rowAttribute label="label"/> 
    95   <rowAttribute label="title"/> 
     93<table label="table" uid="SECTION:table" title="Data specification table" id="cmip.drv.014" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     94  <rowAttribute label="label" title="Record Label"/> 
     95  <rowAttribute label="title" title="Record Title"/> 
    9696  <rowAttribute label="description"/> 
    9797  <rowAttribute label="comment"/> 
    9898  <rowAttribute label="frequency"/> 
    99   <rowAttribute label="uuid"/> 
     99  <rowAttribute label="uid"/> 
    100100</table> 
    101 <table label="cref" title="Coordinate Reference" id="cmip.drv.015" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     101<table label="cref" uid="SECTION:cref" title="Coordinate Reference" id="cmip.drv.015" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     102  <rowAttribute label="label" title="Record Label"/> 
     103  <rowAttribute label="title" title="Record Title"/> 
    102104  <rowAttribute label="label"/> 
    103   <rowAttribute label="title"/> 
    104   <rowAttribute label="label"/> 
    105   <rowAttribute label="uuid"/> 
     105  <rowAttribute label="uid"/> 
    106106</table> 
    107 <table label="areaType" title="CMIP Area Type" id="cmip.drv.016" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    108   <rowAttribute label="label"/> 
    109   <rowAttribute label="title"/> 
     107<table label="areaType" uid="SECTION:areaType" title="CMIP Area Type" id="cmip.drv.016" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     108  <rowAttribute label="label" title="Record Label"/> 
     109  <rowAttribute label="title" title="Record Title"/> 
    110110  <rowAttribute label="inCF"/> 
    111   <rowAttribute label="uuid"/> 
     111  <rowAttribute label="uid"/> 
    112112</table> 
    113 <table label="timeSlice" title="Time slices used in data request" id="cmip.drv.017" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    114   <rowAttribute label="label"/> 
    115   <rowAttribute label="title"/> 
     113<table label="timeSlice" uid="SECTION:timeSlice" title="Time slices used in data request" id="cmip.drv.017" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     114  <rowAttribute label="label" title="Record Label"/> 
     115  <rowAttribute label="title" title="Record Title"/> 
    116116  <rowAttribute label="type"/> 
    117117  <rowAttribute label="specification"/> 
    118   <rowAttribute label="uuid"/> 
     118  <rowAttribute label="uid"/> 
    119119</table> 
    120 <table label="modelFamily" title="Family of model" id="cmip.drv.018" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    121   <rowAttribute label="label"/> 
    122   <rowAttribute label="title"/> 
    123   <rowAttribute label="uuid"/> 
     120<table label="modelFamily" uid="SECTION:modelFamily" title="Family of model" id="cmip.drv.018" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     121  <rowAttribute label="label" title="Record Label"/> 
     122  <rowAttribute label="title" title="Record Title"/> 
     123  <rowAttribute label="uid"/> 
    124124</table> 
    125 <table label="priority" title="Variable priority" id="cmip.drv.019" itemLabelMode="int" level="0" maxOccurs="1" labUnique="Yes"> 
    126   <rowAttribute label="label"/> 
    127   <rowAttribute label="title"/> 
     125<table label="priority" uid="SECTION:priority" title="Variable priority" id="cmip.drv.019" itemLabelMode="int" level="0" maxOccurs="1" labUnique="Yes"> 
     126  <rowAttribute label="label" title="Record Label"/> 
     127  <rowAttribute label="title" title="Record Title"/> 
    128128  <rowAttribute label="description"/> 
    129   <rowAttribute label="uuid"/> 
     129  <rowAttribute label="uid"/> 
    130130</table> 
    131 <table label="qcLevel" title="Quality control level" id="cmip.drv.020" itemLabelMode="int" level="0" maxOccurs="1" labUnique="Yes"> 
    132   <rowAttribute label="label"/> 
    133   <rowAttribute label="title"/> 
    134   <rowAttribute label="uuid"/> 
     131<table label="qcLevel" uid="SECTION:qcLevel" title="Quality control level" id="cmip.drv.020" itemLabelMode="int" level="0" maxOccurs="1" labUnique="Yes"> 
     132  <rowAttribute label="label" title="Record Label"/> 
     133  <rowAttribute label="title" title="Record Title"/> 
     134  <rowAttribute label="uid"/> 
    135135</table> 
    136 <table label="complianceCode" title="Data specification compliance codes" id="cmip.drv.021" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    137   <rowAttribute label="label"/> 
    138   <rowAttribute label="title"/> 
    139   <rowAttribute label="uuid"/> 
     136<table label="complianceCode" uid="SECTION:complianceCode" title="Data specification compliance codes" id="cmip.drv.021" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     137  <rowAttribute label="label" title="Record Label"/> 
     138  <rowAttribute label="title" title="Record Title"/> 
     139  <rowAttribute label="uid"/> 
    140140</table> 
    141 <table label="glossary" title="Glossary" id="cmip.drv.022" itemLabelMode="def" level="0" maxOccurs="1" labUnique="No"> 
    142   <rowAttribute label="label"/> 
    143   <rowAttribute label="title"/> 
     141<table label="glossary" uid="SECTION:glossary" title="Glossary" id="cmip.drv.022" itemLabelMode="def" level="0" maxOccurs="1" labUnique="No"> 
     142  <rowAttribute label="label" title="Record Label"/> 
     143  <rowAttribute label="title" title="Record Title"/> 
    144144  <rowAttribute label="fullName"/> 
    145145  <rowAttribute label="description"/> 
    146146  <rowAttribute label="url"/> 
    147   <rowAttribute label="uuid"/> 
     147  <rowAttribute label="uid"/> 
    148148</table> 
    149 <table label="modelCompType" title="Model Component Types/Categories [redundant with *Native Grid*]" id="cmip.drv.023" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    150   <rowAttribute label="label"/> 
    151   <rowAttribute label="title"/> 
    152   <rowAttribute label="uuid"/> 
     149<table label="modelCompType" uid="SECTION:modelCompType" title="Model Component Types/Categories [redundant with *Native Grid*]" id="cmip.drv.023" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     150  <rowAttribute label="label" title="Record Label"/> 
     151  <rowAttribute label="title" title="Record Title"/> 
     152  <rowAttribute label="uid"/> 
    153153</table> 
    154 <table label="modelType" title="Class of model" id="cmip.drv.024" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    155   <rowAttribute label="label"/> 
    156   <rowAttribute label="title"/> 
    157   <rowAttribute label="uuid"/> 
     154<table label="modelType" uid="SECTION:modelType" title="Class of model" id="cmip.drv.024" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     155  <rowAttribute label="label" title="Record Label"/> 
     156  <rowAttribute label="title" title="Record Title"/> 
     157  <rowAttribute label="uid"/> 
    158158</table> 
    159 <table label="index" title="Index of vocabularies" id="cmip.drv.025" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
    160   <rowAttribute label="label"/> 
    161   <rowAttribute label="title"/> 
     159<table label="index" uid="SECTION:index" title="Index of vocabularies" id="cmip.drv.025" itemLabelMode="def" level="0" maxOccurs="1" labUnique="Yes"> 
     160  <rowAttribute label="label" title="Record Label"/> 
     161  <rowAttribute label="title" title="Record Title"/> 
    162162  <rowAttribute label="table"/> 
    163163  <rowAttribute label="title"/> 
    164164  <rowAttribute label="description"/> 
    165   <rowAttribute label="uuid"/> 
     165  <rowAttribute label="uid"/> 
    166166</table> 
    167 <table label="cmorDimAttr" title="CMOR Dimension Attributes" id="cmip.drv.026" itemLabelMode="und" level="0" maxOccurs="1" labUnique="Yes"> 
    168   <rowAttribute label="label"/> 
    169   <rowAttribute label="title"/> 
     167<table label="cmorDimAttr" uid="SECTION:cmorDimAttr" title="CMOR Dimension Attributes" id="cmip.drv.026" itemLabelMode="und" level="0" maxOccurs="1" labUnique="Yes"> 
     168  <rowAttribute label="label" title="Record Label"/> 
     169  <rowAttribute label="title" title="Record Title"/> 
    170170  <rowAttribute label="description"/> 
    171   <rowAttribute label="uuid"/> 
     171  <rowAttribute label="uid"/> 
    172172  <rowAttribute label="CMORattr" title="Corresponding label in the CMOR MIP tables, if different"/> 
    173173</table> 
    174 <table label="processingOptions" title="Processing steps required" id="cmip.drv.027" itemLabelMode="an" level="0" maxOccurs="1" labUnique="Yes"> 
    175   <rowAttribute label="label"/> 
     174<table label="processingOptions" uid="SECTION:processingOptions" title="Processing steps required" id="cmip.drv.027" itemLabelMode="an" level="0" maxOccurs="1" labUnique="Yes"> 
     175  <rowAttribute label="label" title="Record Label"/> 
     176  <rowAttribute label="title" title="Record Title"/> 
     177  <rowAttribute label="description"/> 
     178  <rowAttribute label="uid"/> 
     179</table> 
     180<table label="coordinateReference" uid="SECTION:coordinateReference" title="Processing steps required" id="cmip.drv.028" itemLabelMode="an" level="0" maxOccurs="1" labUnique="Yes"> 
     181  <rowAttribute label="label" title="Record Label"/> 
     182  <rowAttribute label="title" title="Record Title"/> 
    176183  <rowAttribute label="title"/> 
    177   <rowAttribute label="description"/> 
    178   <rowAttribute label="uuid"/> 
     184  <rowAttribute label="ogc_wkt"/> 
     185  <rowAttribute label="url"/> 
     186  <rowAttribute label="uid"/> 
    179187</table> 
    180188</defDoc> 
  • CMIP6dreqbuild/trunk/src/framework/out/vocabSample.xml

    r382 r397  
    11<?xml version="1.0" ?> 
    2 <main 
     2<document 
    33xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    44xsi:noNamespaceSchemaLocation="out/dreqSchema.xsd" 
    5 xmlns="uri:w3id.org:cmip6.dreq.dreq:a"> 
    6 <institute class="vocab" title="Institute" id="cmip.drv.001"> 
     5xmlns:dc="http://purl.org/dc/elements/1.1/" 
     6xmlns="urn:w3id.org:cmip6.dreq.dreq:a"> 
     7<prologue> 
     8<dc:title>Draft CMIP6 Data Request</dc:title> 
     9<dc:creator>Martin Juckes</dc:creator> 
     10<dc:date>2015-10-01</dc:date> 
     11</prologue> 
     12<main> 
     13<institute uid="SECTION:institute" class="vocab" title="Institute" id="cmip.drv.001"> 
    714<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    8 <item id="001.001.001" label="example-01" title="dummy title string" url="dummyAt" isni="dummyAt" description="dummyAt" uuid="bc5512e4-5713-11e5-9f3f-ac72891c3257"/> 
     15<item id="001.001.001" label="example-01" title="dummy title string" url="dummyAt" isni="dummyAt" description="dummyAt" uid="c2c0d4a2-6838-11e5-b0d3-5404a60d96b5"/> 
    916</institute> 
    10 <model class="vocab" title="Model" id="cmip.drv.002"> 
     17<model uid="SECTION:model" class="vocab" title="Model" id="cmip.drv.002"> 
    1118<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    12 <item id="001.002.001" label="example-01" title="dummy title string" description="dummyAt" url="dummyAt" altUrl="dummyAt" source="dummyAt" uuid="bc5554fc-5713-11e5-9f3f-ac72891c3257"/> 
     19<item id="001.002.001" label="example-01" title="dummy title string" description="dummyAt" url="dummyAt" altUrl="dummyAt" source="dummyAt" uid="c2c11778-6838-11e5-b0d3-5404a60d96b5"/> 
    1320</model> 
    14 <physicsvers class="vocab" title="Physics Version" id="cmip.drv.003"> 
     21<physicsvers uid="SECTION:physicsvers" class="vocab" title="Physics Version" id="cmip.drv.003"> 
    1522<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    16 <item id="001.003.001" label="example-01" title="dummy title string" description="dummyAt" uuid="bc55925a-5713-11e5-9f3f-ac72891c3257"/> 
     23<item id="001.003.001" label="example-01" title="dummy title string" description="dummyAt" uid="c2c151e8-6838-11e5-b0d3-5404a60d96b5"/> 
    1724</physicsvers> 
    18 <initialisationmethod class="vocab" title="Initialisation Method" id="cmip.drv.004"> 
     25<initialisationmethod uid="SECTION:initialisationmethod" class="vocab" title="Initialisation Method" id="cmip.drv.004"> 
    1926<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    20 <item id="001.004.001" label="example-01" title="dummy title string" description="dummyAt" uuid="bc55cf72-5713-11e5-9f3f-ac72891c3257"/> 
     27<item id="001.004.001" label="example-01" title="dummy title string" description="dummyAt" uid="c2c18a82-6838-11e5-b0d3-5404a60d96b5"/> 
    2128</initialisationmethod> 
    22 <modelComp class="vocab" title="Model Components" id="cmip.drv.005"> 
     29<modelComp uid="SECTION:modelComp" class="vocab" title="Model Components" id="cmip.drv.005"> 
    2330<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    24 <item id="001.005.001" label="example-01" title="dummy title string" componentType="dummyAt" sizeH="dummyAt" sizeV="dummyAt" uuid="bc561144-5713-11e5-9f3f-ac72891c3257"/> 
     31<item id="001.005.001" label="example-01" title="dummy title string" componentType="dummyAt" sizeH="dummyAt" sizeV="dummyAt" uid="c2c1c4a2-6838-11e5-b0d3-5404a60d96b5"/> 
    2532</modelComp> 
    26 <activity class="vocab" title="Coordinating activity" id="cmip.drv.006"> 
     33<activity uid="SECTION:activity" class="vocab" title="Coordinating activity" id="cmip.drv.006"> 
    2734<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    28 <item id="001.006.001" label="example-01" title="dummy title string" url="dummyAt" status="dummyAt" uuid="bc562030-5713-11e5-9f3f-ac72891c3257"/> 
     35<item id="001.006.001" label="example-01" title="dummy title string" url="dummyAt" status="dummyAt" uid="c2c1cee8-6838-11e5-b0d3-5404a60d96b5"/> 
    2936</activity> 
    30 <product class="vocab" title="Data product" id="cmip.drv.007"> 
     37<product uid="SECTION:product" class="vocab" title="Data product" id="cmip.drv.007"> 
    3138<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    32 <item id="001.007.001" label="example-01" title="dummy title string" uuid="bc56251c-5713-11e5-9f3f-ac72891c3257"/> 
     39<item id="001.007.001" label="example-01" title="dummy title string" uid="c2c1d262-6838-11e5-b0d3-5404a60d96b5"/> 
    3340</product> 
    34 <experiment class="vocab" title="Numerical Experiment" id="cmip.drv.008"> 
     41<experiment uid="SECTION:experiment" class="vocab" title="Numerical Experiment" id="cmip.drv.008"> 
    3542<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    36 <item id="001.008.001" label="example-01" title="dummy title string" altLabel="dummyAt" description="dummyAt" url="dummyAt" sponsor="dummyAt" uuid="bc562cb0-5713-11e5-9f3f-ac72891c3257"/> 
     43<item id="001.008.001" label="example-01" title="dummy title string" altLabel="dummyAt" description="dummyAt" url="dummyAt" sponsor="dummyAt" uid="c2c1d744-6838-11e5-b0d3-5404a60d96b5"/> 
    3744</experiment> 
    38 <frequency class="vocab" title="Temporal frequency of data values" id="cmip.drv.009"> 
     45<frequency uid="SECTION:frequency" class="vocab" title="Temporal frequency of data values" id="cmip.drv.009"> 
    3946<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    40 <item id="001.009.001" label="example-01" title="dummy title string" iso="dummyAt" uuid="bc563340-5713-11e5-9f3f-ac72891c3257"/> 
     47<item id="001.009.001" label="example-01" title="dummy title string" iso="dummyAt" uid="c2c1daf0-6838-11e5-b0d3-5404a60d96b5"/> 
    4148</frequency> 
    42 <realm class="vocab" title="Modeling realm" id="cmip.drv.010"> 
     49<realm uid="SECTION:realm" class="vocab" title="Modeling realm" id="cmip.drv.010"> 
    4350<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    44 <item id="001.010.001" label="example-01" title="dummy title string" uuid="bc5637f0-5713-11e5-9f3f-ac72891c3257"/> 
     51<item id="001.010.001" label="example-01" title="dummy title string" uid="c2c1de06-6838-11e5-b0d3-5404a60d96b5"/> 
    4552</realm> 
    46 <grid class="vocab" title="Native grid" id="cmip.drv.011"> 
     53<grid uid="SECTION:grid" class="vocab" title="Native grid" id="cmip.drv.011"> 
    4754<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    48 <item id="001.011.001" label="example-01" title="dummy title string" uuid="bc563ca0-5713-11e5-9f3f-ac72891c3257"/> 
     55<item id="001.011.001" label="example-01" title="dummy title string" uid="c2c1e0fe-6838-11e5-b0d3-5404a60d96b5"/> 
    4956</grid> 
    50 <dimensions class="vocab" title="MIP table variable dimensions" id="cmip.drv.012"> 
     57<dimensions uid="SECTION:dimensions" class="vocab" title="MIP table variable dimensions" id="cmip.drv.012"> 
    5158<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    52 <item id="001.012.001" label="example01" title="dummy title string" altLabel="dummyAt" sn="dummyAt" size="25" uuid="bc564394-5713-11e5-9f3f-ac72891c3257"/> 
     59<item id="001.012.001" label="example01" title="dummy title string" altLabel="dummyAt" sn="dummyAt" size="25" uid="c2c1e54a-6838-11e5-b0d3-5404a60d96b5"/> 
    5360</dimensions> 
    54 <forcings class="vocab" title="Forcing" id="cmip.drv.013"> 
     61<forcings uid="SECTION:forcings" class="vocab" title="Forcing" id="cmip.drv.013"> 
    5562<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    56 <item id="001.013.001" label="example-01" title="dummy title string" uuid="bc564844-5713-11e5-9f3f-ac72891c3257"/> 
     63<item id="001.013.001" label="example-01" title="dummy title string" uid="c2c1e95a-6838-11e5-b0d3-5404a60d96b5"/> 
    5764</forcings> 
    58 <table class="vocab" title="Data specification table" id="cmip.drv.014"> 
     65<table uid="SECTION:table" class="vocab" title="Data specification table" id="cmip.drv.014"> 
    5966<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    60 <item id="001.014.001" label="example-01" title="dummy title string" description="dummyAt" comment="dummyAt" frequency="dummyAt" uuid="bc564f06-5713-11e5-9f3f-ac72891c3257"/> 
     67<item id="001.014.001" label="example-01" title="dummy title string" description="dummyAt" comment="dummyAt" frequency="dummyAt" uid="c2c1ed7e-6838-11e5-b0d3-5404a60d96b5"/> 
    6168</table> 
    62 <cref class="vocab" title="Coordinate Reference" id="cmip.drv.015"> 
     69<cref uid="SECTION:cref" class="vocab" title="Coordinate Reference" id="cmip.drv.015"> 
    6370<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    64 <item id="001.015.001" label="example-01" title="dummy title string" uuid="bc5655a0-5713-11e5-9f3f-ac72891c3257"/> 
     71<item id="001.015.001" label="example-01" title="dummy title string" uid="c2c1f0c6-6838-11e5-b0d3-5404a60d96b5"/> 
    6572</cref> 
    66 <areaType class="vocab" title="CMIP Area Type" id="cmip.drv.016"> 
     73<areaType uid="SECTION:areaType" class="vocab" title="CMIP Area Type" id="cmip.drv.016"> 
    6774<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    68 <item id="001.016.001" label="example-01" title="dummy title string" inCF="dummyAt" uuid="bc565b04-5713-11e5-9f3f-ac72891c3257"/> 
     75<item id="001.016.001" label="example-01" title="dummy title string" inCF="dummyAt" uid="c2c1f422-6838-11e5-b0d3-5404a60d96b5"/> 
    6976</areaType> 
    70 <timeSlice class="vocab" title="Time slices used in data request" id="cmip.drv.017"> 
     77<timeSlice uid="SECTION:timeSlice" class="vocab" title="Time slices used in data request" id="cmip.drv.017"> 
    7178<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    72 <item id="001.017.001" label="example-01" title="dummy title string" type="dummyAt" specification="dummyAt" uuid="bc566112-5713-11e5-9f3f-ac72891c3257"/> 
     79<item id="001.017.001" label="example-01" title="dummy title string" type="dummyAt" specification="dummyAt" uid="c2c1f7d8-6838-11e5-b0d3-5404a60d96b5"/> 
    7380</timeSlice> 
    74 <modelFamily class="vocab" title="Family of model" id="cmip.drv.018"> 
     81<modelFamily uid="SECTION:modelFamily" class="vocab" title="Family of model" id="cmip.drv.018"> 
    7582<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    76 <item id="001.018.001" label="example-01" title="dummy title string" uuid="bc566702-5713-11e5-9f3f-ac72891c3257"/> 
     83<item id="001.018.001" label="example-01" title="dummy title string" uid="c2c1fac6-6838-11e5-b0d3-5404a60d96b5"/> 
    7784</modelFamily> 
    78 <priority class="vocab" title="Variable priority" id="cmip.drv.019"> 
     85<priority uid="SECTION:priority" class="vocab" title="Variable priority" id="cmip.drv.019"> 
    7986<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    80 <item id="001.019.001" label="1" title="dummy title string" description="dummyAt" uuid="bc566c7a-5713-11e5-9f3f-ac72891c3257"/> 
     87<item id="001.019.001" label="1" title="dummy title string" description="dummyAt" uid="c2c1fe18-6838-11e5-b0d3-5404a60d96b5"/> 
    8188</priority> 
    82 <qcLevel class="vocab" title="Quality control level" id="cmip.drv.020"> 
     89<qcLevel uid="SECTION:qcLevel" class="vocab" title="Quality control level" id="cmip.drv.020"> 
    8390<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    84 <item id="001.020.001" label="1" title="dummy title string" uuid="bc56712a-5713-11e5-9f3f-ac72891c3257"/> 
     91<item id="001.020.001" label="1" title="dummy title string" uid="c2c200fc-6838-11e5-b0d3-5404a60d96b5"/> 
    8592</qcLevel> 
    86 <complianceCode class="vocab" title="Data specification compliance codes" id="cmip.drv.021"> 
     93<complianceCode uid="SECTION:complianceCode" class="vocab" title="Data specification compliance codes" id="cmip.drv.021"> 
    8794<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    88 <item id="001.021.001" label="example-01" title="dummy title string" uuid="bc5675c6-5713-11e5-9f3f-ac72891c3257"/> 
     95<item id="001.021.001" label="example-01" title="dummy title string" uid="c2c203e0-6838-11e5-b0d3-5404a60d96b5"/> 
    8996</complianceCode> 
    90 <glossary class="vocab" title="Glossary" id="cmip.drv.022"> 
     97<glossary uid="SECTION:glossary" class="vocab" title="Glossary" id="cmip.drv.022"> 
    9198<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    92 <item id="001.022.001" label="example-01" title="dummy title string" fullName="dummyAt" description="dummyAt" url="dummyAt" uuid="bc567c7e-5713-11e5-9f3f-ac72891c3257"/> 
     99<item id="001.022.001" label="example-01" title="dummy title string" fullName="dummyAt" description="dummyAt" url="dummyAt" uid="c2c207e6-6838-11e5-b0d3-5404a60d96b5"/> 
    93100</glossary> 
    94 <modelCompType class="vocab" title="Model Component Types/Categories [redundant with *Native Grid*]" id="cmip.drv.023"> 
     101<modelCompType uid="SECTION:modelCompType" class="vocab" title="Model Component Types/Categories [redundant with *Native Grid*]" id="cmip.drv.023"> 
    95102<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    96 <item id="001.023.001" label="example-01" title="dummy title string" uuid="bc568138-5713-11e5-9f3f-ac72891c3257"/> 
     103<item id="001.023.001" label="example-01" title="dummy title string" uid="c2c20ade-6838-11e5-b0d3-5404a60d96b5"/> 
    97104</modelCompType> 
    98 <modelType class="vocab" title="Class of model" id="cmip.drv.024"> 
     105<modelType uid="SECTION:modelType" class="vocab" title="Class of model" id="cmip.drv.024"> 
    99106<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    100 <item id="001.024.001" label="example-01" title="dummy title string" uuid="bc5685d4-5713-11e5-9f3f-ac72891c3257"/> 
     107<item id="001.024.001" label="example-01" title="dummy title string" uid="c2c20dae-6838-11e5-b0d3-5404a60d96b5"/> 
    101108</modelType> 
    102 <index class="vocab" title="Index of vocabularies" id="cmip.drv.025"> 
     109<index uid="SECTION:index" class="vocab" title="Index of vocabularies" id="cmip.drv.025"> 
    103110<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    104 <item id="001.025.001" label="example-01" title="dummy title string" table="dummyAt" description="dummyAt" uuid="bc568c46-5713-11e5-9f3f-ac72891c3257"/> 
     111<item id="001.025.001" label="example-01" title="dummy title string" table="dummyAt" description="dummyAt" uid="c2c21182-6838-11e5-b0d3-5404a60d96b5"/> 
    105112</index> 
    106 <cmorDimAttr class="vocab" title="CMOR Dimension Attributes" id="cmip.drv.026"> 
     113<cmorDimAttr uid="SECTION:cmorDimAttr" class="vocab" title="CMOR Dimension Attributes" id="cmip.drv.026"> 
    107114<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    108 <item id="001.026.001" label="example_03" title="dummy title string" description="dummyAt" uuid="bc5692a4-5713-11e5-9f3f-ac72891c3257" CMORattr="dummyAt"/> 
     115<item id="001.026.001" label="example_03" title="dummy title string" description="dummyAt" uid="c2c215d8-6838-11e5-b0d3-5404a60d96b5" CMORattr="dummyAt"/> 
    109116</cmorDimAttr> 
    110 <processingOptions class="vocab" title="Processing steps required" id="cmip.drv.027"> 
     117<processingOptions uid="SECTION:processingOptions" class="vocab" title="Processing steps required" id="cmip.drv.027"> 
    111118<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    112 <item id="001.027.001" label="example01" title="dummy title string" description="dummyAt" uuid="bc5697fe-5713-11e5-9f3f-ac72891c3257"/> 
     119<item id="001.027.001" label="example01" title="dummy title string" description="dummyAt" uid="c2c2192a-6838-11e5-b0d3-5404a60d96b5"/> 
    113120</processingOptions> 
     121<coordinateReference uid="SECTION:coordinateReference" class="vocab" title="Processing steps required" id="cmip.drv.028"> 
     122<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     123<item id="001.028.001" label="example01" title="dummy title string" ogc_wkt="dummyAt" url="dummyAt" uid="c2c21d30-6838-11e5-b0d3-5404a60d96b5"/> 
     124</coordinateReference> 
    114125</main> 
     126</document> 
  • CMIP6dreqbuild/trunk/src/framework/ptxt.py

    r393 r397  
    99''' 
    1010import string, re, collections, sys, uuid 
     11import time, datetime 
    1112 
    1213if len(sys.argv) == 1: 
    1314  print __doc__ 
    1415  exit() 
     16 
     17t = time.gmtime() 
     18d = datetime.date(t.tm_year, t.tm_mon, t.tm_mday) 
     19 
     20## 
     21## for definitions of dublin core elements see: 
     22## see http://dublincore.org/documents/usageguide/elements.shtml 
     23## 
     24samplePrologue="""<prologue> 
     25<dc:title>Draft CMIP6 Data Request</dc:title> 
     26<dc:creator>Martin Juckes</dc:creator> 
     27<dc:date>%s</dc:date> 
     28</prologue> 
     29""" %  d.isoformat() 
    1530 
    1631args = sys.argv[1:] 
     
    223238    oo = open( 'out/%s.xml' % fn, 'w' ) 
    224239    if mode in [ 'samp','updsamp']: 
    225       mainEl = "main" 
     240      mainEl = "document" 
    226241      mainElCont = ''' 
    227242xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    228243xsi:noNamespaceSchemaLocation="out/dreqSchema.xsd" 
    229 xmlns="uri:w3id.org:cmip6.dreq.dreq:a"''' 
     244xmlns:dc="http://purl.org/dc/elements/1.1/" 
     245xmlns="urn:w3id.org:cmip6.dreq.dreq:a"''' 
    230246    else: 
    231247      mainEl = "defDoc" 
    232248      mainElCont = '''  
    233249xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    234 xmlns="uri:w3id.org:cmip6.dreq.framework:a" 
     250xmlns="urn:w3id.org:cmip6.dreq.framework:a" 
    235251xsi:schemaLocation="http://w3id.org/cmip6dr/ns vocabFrameworkSchema_v01beta.xsd"''' 
    236252 
     
    243259 - updProv {Proposer of update}''' 
    244260 
     261    if mode in [ 'samp','updsamp']: 
     262      oo.write( '%s<main>\n' % samplePrologue ) 
    245263    counter = collections.defaultdict(int) 
    246264    for l in ii: 
     
    257275 
    258276    this.tmpl(oo=oo,mode=mode) 
     277    if mode in [ 'samp','updsamp']: 
     278      oo.write( '</main>\n' ) 
    259279    oo.write( '</%s>\n' % mainEl ) 
    260280    oo.close() 
  • CMIP6dreqbuild/trunk/src/framework/scanDreq.py

    r393 r397  
    2929        ee1 = collections.defaultdict( list ) 
    3030        for k,i in iref_by_uid[thisuid]: 
    31           thisi = uid[i][1] 
     31          thisi = uid[i] 
    3232          sect = thisi._h.label 
    3333          if sect == 'groupItem': 
     
    7979        self.ddel[ l1[8] ] = (l1[10],l1[11]) 
    8080        self.ddel[ l2[8] ] = (l2[10],l2[11]) 
     81      elif xx[1] == '' and yy[1] == "": 
     82        print 'WARN.087.00001: uncorrected duplication ..... %s ' %  str( l1[:5] ) 
    8183      else: 
    8284        ths = -1 
     
    112114### the results of the 2nd pass go back to ../workbook to generate a new set of inputs. 
    113115### 
    114 up = updates('varDup_20150724.csv', 'varMult_20150725.csv') 
    115 ##up.scandup() 
     116up = updates('varDup_20150928.csv', 'varMult_20150725.csv') 
     117up.scandup() 
    116118up.scanmult() 
    117119 
     120urep = False 
    118121urep = True 
    119 urep = False 
    120122if urep: 
    121123  oo = open( 'uuidreplace.csv', 'w' ) 
     
    125127      kn = up.repl[k] 
    126128      for tag,ki  in inx.iref_by_uid[k]: 
    127          try: 
    128            oo.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' % (k,kn,tag,ki, inx.uid[k][1].label,  inx.uid[kn][1].label, inx.uid[ki][1].label) ) 
    129          except: 
    130            print k,kn,ki 
    131            raise 
     129         vu = [ inx.uid.has_key(kk) for kk in [k,kn,ki] ] 
     130         if all( vu ): 
     131           oo.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' % (k,kn,tag,ki, inx.uid[k].label,  inx.uid[kn].label, inx.uid[ki].label) ) 
     132         else: 
     133           print 'ERROR.088.0001: Bad index in replace info: %s .. %s .. %s' % ( str([k,kn,ki]), str(vu), tag ) 
    132134    else: 
    133135      oo2.write( k + '\n' ) 
     
    173175    if inx.var.label.has_key( i.label ): 
    174176      if len( inx.var.label[i.label] ) == 1: 
    175         v = inx.uid[ inx.var.label[i.label][0] ][1] 
     177        v = inx.uid[ inx.var.label[i.label][0] ] 
    176178        oo.write( string.join( ['unique',i.label,v.label,v.uid,v.prov,i.mip], '\t' ) + '\n' ) 
    177179      else: 
     
    200202    if all(cc): 
    201203### where duplicates are identical , collect and output at end of file. 
    202       deferredRecs.append( string.join(map( lambda x: v1.__dict__[x], hs) + [v2.uid,'identical'], '\t' ) + '\n' ) 
    203       deferredRecs.append( string.join(map( lambda x: v2.__dict__[x], hs) + ['',''], '\t' ) + '\n' ) 
     204      pv1 = string.find( v1.__dict__['prov'], 'OMIP.' ) != -1 
     205      pv2 = string.find( v2.__dict__['prov'], 'OMIP.' ) != -1 
     206      if pv2: 
     207        vp = v2 
     208        vo = v1 
     209      else: 
     210        if not pv1: 
     211          print 'WARN.088.00002: no preference: %s, %s, %s' % (v1.__dict__['label'],v1.__dict__['prov'],v2.__dict__['prov']) 
     212        vp = v1 
     213        vo = v2 
     214      deferredRecs.append( string.join(map( lambda x: vo.__dict__[x], hs) + [vp.uid,'identical'], '\t' ) + '\n' ) 
     215      deferredRecs.append( string.join(map( lambda x: vp.__dict__[x], hs) + ['',''], '\t' ) + '\n' ) 
    204216    else: 
    205217      oo2.write( string.join(map( lambda x: v1.__dict__[x], hs) + ['',''], '\t' ) + '\n' ) 
     
    515527        tn = str( len( mrefs[k] ) ) 
    516528        for t in mrefs[k]: 
    517           s = self.dreq.inx.uid[t[2]][1]._h.label 
     529          s = self.dreq.inx.uid[t[2]]._h.label 
    518530          ee['%s.%s' % (s,t[1])] += 1 
    519531        if len( ee.keys() ) == 1: 
  • CMIP6dreqbuild/trunk/src/framework/scope.py

    r393 r397  
     1"""Date Request Scoping module 
     2--------------------------- 
     3The scope.py module contains the dreqQuery class and a set of ancilliary functions. The dreqQuery class contains methods for analysing the data request. 
     4""" 
    15import dreq 
    26import collections, string 
     
    1519 
    1620nt_mcfg = collections.namedtuple( 'mcfg', ['nho','nlo','nha','nla','nlas','nls','nh1'] ) 
     21 
     22def filter1( a, b ): 
     23  if b < 0: 
     24    return a 
     25  else: 
     26    return min( [a,b] ) 
    1727 
    1828npy = {'daily':365, u'Annual':1, u'fx':0.01, u'1hr':24*365, u'3hr':8*365, u'monClim':12, u'Timestep':100, u'6hr':4*365, u'day':365, u'1day':365, u'mon':12, u'yr':1, u'1mon':12, 'month':12, 'year':1, 'monthly':12, 'hr':24*365, 'other':24*365, 'subhr':24*365, 'Day':365, '6h':4*365, 
     
    2232def vol01( sz, v, npy, freq, inx ): 
    2333  n1 = npy[freq] 
    24   s = sz[inx.uid[v][1].stid] 
     34  s = sz[inx.uid[v].stid] 
    2535  assert type(s) == type(1), 'Non-integer size found for %s' % v 
    2636  assert type(n1) in (type(1),type(0.)), 'Non-number "npy" found for %s, [%s]' % (v,freq) 
     
    3646 
    3747class dreqQuery(object): 
     48  __doc__ = """Methods to analyse the data request, including data volume estimates""" 
    3849  def __init__(self,dq=None): 
    3950    if dq == None: 
     
    5566      self.mcfg[k] = self.default_mcfg.__dict__[k] 
    5667    self.szcfg() 
     68    self.requestItemExpAll(  ) 
    5769 
    5870  def szcfg(self): 
     
    105117    elif type(mipSel) == type({1,2}): 
    106118      t1 = lambda x: x in mipSel 
    107     self.rqs = list({self.dq.inx.uid[i.rid][1] for i in self.dq.coll['objectiveLink'].items if t1(i.label) }) 
     119    self.rqs = list({self.dq.inx.uid[i.rid] for i in self.dq.coll['objectiveLink'].items if t1(i.label) }) 
    108120    return self.rqs 
    109121 
     
    115127      t1 = lambda x: x in {self.rlu[i] for i in objSel} 
    116128 
    117     self.rqs = list({self.dq.inx.uid[i.rid][1] for i in self.dq.coll['objectiveLink'].items if t1(i.oid) }) 
     129    self.rqs = list({self.dq.inx.uid[i.rid] for i in self.dq.coll['objectiveLink'].items if t1(i.oid) }) 
    118130    return self.rqs 
    119131 
     
    128140    return self.ntot 
    129141 
    130   def volByExpt( self, l1, ex, pmax=2, cc=None ): 
     142  def volByExpt( self, l1, ex, exptList, pmax=2, cc=None ): 
    131143    """volByExpt: calculates the total data volume associated with an experiment/experiment group and a list of request items. 
    132144          The calculation has some approximations concerning the number of years in each experiment group.""" 
     
    135147## 
    136148    inx = self.dq.inx 
    137     rql = {i.rlid for i in l1 if i.expt == ex} 
     149## 
     150## rql is the set of all request links which are associated with a request item for this experiment set 
     151## 
     152    rql0 = {i.rlid for i in l1 if i.esid == ex} 
     153    rqlInv = {u for u in rql0 if inx.uid[u]._h.label == 'remarks' } 
     154    if len(rqlInv) != 0: 
     155      print 'WARNING.001.00002: %s invalid request links from request items ...' % len(rqlInv) 
     156    rql = {u for u in rql0 if inx.uid[u]._h.label != 'remarks' } 
    138157 
    139158## The complete set of variables associated with these requests: 
    140     rqvg = list({inx.uid[i][1].refid for i in rql}) 
     159    rqvg = list({inx.uid[i].refid for i in rql}) 
    141160 
    142161###To obtain a set of variables associated with this collection of variable groups: 
     
    144163    x = {tuple( {col1.add(i) for i in inx.iref_by_sect[vg].a['requestVar']} ) for vg in rqvg} 
    145164###The collector col1 here accumulates all the record uids, resulting in a single collection. These are request variables, to get a set of CMOR variables at priority <= pmax: 
    146     vars = {inx.uid[l][1].vid for l in list(col1) if inx.uid[l][1].priority <= pmax} 
     165    vars = {inx.uid[l].vid for l in list(col1) if inx.uid[l].priority <= pmax} 
    147166 
    148167### filter out cases where the request does not point to a CMOR variable. 
    149168    ##vars = {vid for vid in vars if inx.uid[vid][0] == u'CMORvar'} 
    150     vars = {vid for vid in vars if inx.uid[vid][1]._h.label == u'CMORvar'} 
     169    vars = {vid for vid in vars if inx.uid[vid]._h.label == u'CMORvar'} 
    151170 
    152171    e = {} 
    153172    for u in rql: 
    154173### for request variables which reference the variable group attached to the link, add the associate CMOR variables, subject to priority 
    155       i = inx.uid[u][1] 
    156       e[i.uid] = { inx.uid[x][1].vid for x in inx.iref_by_sect[i.refid].a['requestVar'] if inx.uid[x][1].priority <= pmax} 
    157  
     174      i = inx.uid[u] 
     175      e[i.uid] = { inx.uid[x].vid for x in inx.iref_by_sect[i.refid].a['requestVar'] if inx.uid[x].priority <= pmax} 
    158176# 
    159177# for each variable, calculate the maximum number of years across all the request links which reference that variable. 
    160 # 
     178## 
     179## for each request item we have nymax, nenmax, nexmax. 
     180## 
    161181    nym = {} 
    162182    for v in vars: 
    163183      ### for each request item, check if v is in the set of variables and then add the number of years. 
    164       nym[v] = max( {i.ny for i in l1 if i.expt == ex and v in e[i.rlid]} ) 
     184      nym[v] = max( {self.rqiExp[i.uid][2] for i in l1 if i.esid == ex and v in e[i.rlid]} ) 
    165185 
    166186    szv = {} 
    167187    ov = [] 
    168188    for v in vars: 
    169       szv[v] = self.sz[inx.uid[v][1].stid]*npy[inx.uid[v][1].frequency] 
    170       ov.append( self.dq.inx.uid[v][1] ) 
    171     ee = self.listIndexDual( ov, 'frequency', 'mipTable', acount=None, alist=None, cdict=szv, cc=cc ) 
    172     self.ngptot = sum( [  self.sz[inx.uid[v][1].stid]* npy[inx.uid[v][1].frequency] *nym[v]  for v in vars] ) 
     189      szv[v] = self.sz[inx.uid[v].stid]*npy[inx.uid[v].frequency] 
     190      ov.append( self.dq.inx.uid[v] ) 
     191    ee = self.listIndexDual( ov, 'frequency', 'label', acount=None, alist=None, cdict=szv, cc=cc ) 
     192    self.ngptot = sum( [  self.sz[inx.uid[v].stid]* npy[inx.uid[v].frequency] *nym[v]  for v in vars] ) 
    173193    return (self.ngptot, ee ) 
     194 
     195  def esid_to_exptList(self,esid,deref=False): 
     196    if not self.dq.inx.uid.has_key(esid): 
     197      print 'Attempt to dereferece invalid uid: %s' % esid 
     198      raise 
     199 
     200    if self.dq.inx.uid[esid]._h.label == 'experiment': 
     201      expts = [esid,] 
     202    elif self.dq.inx.uid[esid]._h.label != 'remarks': 
     203      if self.dq.inx.iref_by_sect.has_key(esid) and self.dq.inx.iref_by_sect[esid].a.has_key( 'experiment' ): 
     204        expts = self.dq.inx.iref_by_sect[esid].a['experiment'] 
     205      else: 
     206        expts = [] 
     207    else: 
     208      print 'WARNING: request link not associated with valid experiment group' 
     209      raise 
     210 
     211    if deref: 
     212      return [self.dq.inx.uid[e] for e in expts] 
     213    else: 
     214      return expts 
     215   
     216## 
     217## need to call this on load 
     218## then use instead of i.ny etc below 
     219## 
     220  def requestItemExpAll( self ): 
     221    self.rqiExp = {} 
     222    for rqi in self.dq.coll['requestItem'].items: 
     223      a,b,c = self.requestItemExp( rqi ) 
     224      self.rqiExp[rqi.uid] = (a,b,c) 
     225 
     226  def requestItemExp( self, rqi ): 
     227    assert rqi._h.label == "requestItem", 'Argument to requestItemExp must be a requestItem' 
     228    u = rqi.esid 
     229    if self.dq.inx.uid[u]._h.label == 'experiment': 
     230      expts = [u,] 
     231    elif self.dq.inx.uid[u]._h.label != 'remarks': 
     232      if self.dq.inx.iref_by_sect.has_key(u) and self.dq.inx.iref_by_sect[u].a.has_key( 'experiment' ): 
     233        expts = self.dq.inx.iref_by_sect[u].a['experiment'] 
     234      else: 
     235        expts = [] 
     236    else: 
     237      print 'WARNING: request link not associated with valid experiment group'  
     238      i.__info__() 
     239      raise 
     240 
     241    if len(expts) > 0: 
     242      e = [self.dq.inx.uid[i] for i in expts] 
     243      dat = [ (i.ntot, i.yps, i.ensz, i.nstart, filter1(i.yps,rqi.nymax), filter1(i.ensz,rqi.nenmax) ) for i in e] 
     244     
     245    nytot = sum( [x[-2]*x[-1] for x in dat ] ) 
     246    return (expts, dat, nytot ) 
     247     
    174248 
    175249  def summaryByMip( self, pmax=1 ): 
     
    195269       
    196270    #### The set of experiments/experiment groups: 
    197     exps = {i.expt for i in l1} 
     271    exps = {i.esid for i in l1} 
    198272    self.volByE = {} 
    199273    vtot = 0 
    200274    cc = collections.defaultdict( col_count ) 
    201275    for e in exps: 
    202       self.volByE[e] = self.volByExpt( l1, e, pmax=pmax, cc=cc ) 
     276      expts = self.esid_to_exptList(e,deref=True) 
     277      self.volByE[e] = self.volByExpt( l1, e, expts, pmax=pmax, cc=cc ) 
    203278      vtot += self.volByE[e][0] 
    204279    self.indexedVol = cc 
  • CMIP6dreqbuild/trunk/src/workbook/importShDreq.py

    r384 r397  
    1212import collections, string, re 
    1313from utils_wb import uniCleanFunc 
     14import ivg 
    1415 
    1516class s1(object): 
     
    7374         'objective':rq.objec, 'var':rq.vars,'ovar':rq.refti, 'groupitem':rq.grps, \ 
    7475         'revisedtabitem':rq.revti, 'requestlink':rq.rqli, 'requestitem':rq.rqit, \ 
    75          'requestvargroup':rq.rqvg, 'tablesection':rq.rqsect} 
     76         'requestvargroup':rq.rqvg, 'tablesection':rq.rqsect, 'requestvar':rq.revti} 
    7677 
    7778    self.prep(rq) 
     
    9899                    'deflate', 'valid_min', 'flag_values', 'modeling_realm', 'valid_max', 'positive', 'mipTable', \ 
    99100                    'prov', 'provNote', 'frequency', 'rowIndex', 'coordinates') 
     101    self.rqvinfo = ('uuid','label','vid','gpid','priority','mip','table' ) 
    100102### request variables 
    101103    self.rqv = [] 
     
    103105      thissh = self.skey[ksect] 
    104106      if ksect == 'ovar': 
     107            setu1 = set() 
    105108            tab2freq = {u'CMIP5_cfOff':'subhr', u'CORDEX_mon':'mon', u'SPECS_day':'day', u'CMIP5_day':'day', \ 
    106109       u'PMIP3_OImon':'mon', u'CORDEX_day':'day', u'CMIP5_LImon':'mon', u'CMIP5_OImon':'mon', \ 
     
    128131                  rr[id] = 'scalar' 
    129132                tt = thisnt._make( rr )  
     133                if tt.uuid in setu1: 
     134                  print 'ERROR.099.0002: duplicate uuid: %s: %s' % (uuid,str(rr)) 
     135                setu1.add(tt.uuid) 
    130136                ov.append( tt ) 
    131137                dset.add( ov[-1].dimensions ) 
     
    139145                  fr = tab2freq[rr[22]] 
    140146    
    141                 self.cmv.append( (tt.uuid, (tt.dimensions,tt.cell_methods,tt.cell_measures), tt.var, tt.title, tt.comment, tt.vid, \ 
     147                if tt.mipTable[:5] == 'OMIP': 
     148                  prov = 'CMIP6 [OMIP]' 
     149                elif string.find( tt.mipTable, '_' ) != -1: 
     150                  prov = '%s [%s]' % tuple( string.split( tt.mipTable, '_' ) ) 
     151                if tt.var[:5] == 'ccmi_': 
     152                  pass 
     153                else: 
     154                  lab = tt.var 
     155                  if lab in {'*','include Oyr 3D tracers'}: 
     156                    lab = '-copy-' 
     157                  self.cmv.append( (tt.uuid, (tt.dimensions,tt.cell_methods,tt.cell_measures), lab, tt.title, tt.comment, tt.vid, \ 
    142158                    tt.deflate_level, tt.shuffle, tt.ok_max_mean_abs, tt.flag_meanings, tt.type, tt.ok_min_mean_abs, \ 
    143159                    tt.deflate, tt.valid_min, tt.flag_values, tt.modeling_realm, tt.valid_max, tt.positive, tt.mipTable, \ 
    144                     '', '', fr, tt.rowIndex, '') ) 
    145                 self.rqv.append( (str( uuid.uuid1() ),'%s-%s' % (tt.mipTable,tt.var), tt.uuid, tt.gpid, tt.priority) ) 
     160                    prov, '', fr, tt.rowIndex, '') ) 
     161                  self.rqv.append( (str( uuid.uuid1() ),lab, tt.uuid, tt.gpid, tt.priority,tt.mipTable,tt.mipTable) ) 
     162    ##self.rqvinfo = ('uuid','label','vid','gpid','priority','mip','table' ) 
    146163            self.dsort( dset ) 
    147164            print self.dsortdd[ksect][0].keys() 
     
    158175            varsets = [] 
    159176            nov = 0 
    160             for k in thissh: 
     177            setu = set() 
     178            for k in thissh.keys(): 
    161179              if k[0] != '_': 
    162180                rr = thissh[k][:] 
     
    164182## split variable, create 2nd record at 23 levels. 
    165183## 
     184                if rr[iu] in setu: 
     185                  print 'ERROR.099.0001: duplicate uuid in varGroups ... %s:: %s' % (uuid,str(rr)) 
     186                if rr[iu] in setu1: 
     187                  print 'ERROR.099.0003: duplicate uuid in varGroups/ovar ... %s:: %s' % (uuid,str(rr)) 
     188                setu.add(rr[iu]) 
    166189                if rr[il] in  {u'17 (or 23 )', u'17 (or 23)', u'17 (or23)'}: 
    167190                  rr0 = rr + [rr[1] + '23',] 
     
    177200                  rr0[il] = 27 
    178201                  rr0[iu] = str( uuid.uuid1() ) 
     202                  tt = thisnt._make( rr0 ) 
    179203                  gi.append( tt ) 
    180204                  rr[il] = 'all' 
     
    202226                smdd[s] = d1[ dsn.get( s,s ) ] 
    203227 
     228            setu = set() 
    204229            for tt in gi: 
    205230                gr = 'a' 
     
    210235### need to check where variables are, perhaps, refering to "ovar" 
    211236            ##kk = ['group', 'var', 'table', 'freq', 'descriptionEx', 'shape', 'levels', 'tstyle', 'mask', 'misc', 'mip', 'uuid', 'new', 'gpid', 'vkey', 'vid'] 
     237                prov = '%s [%s]' % (tt.mip,tt.group) 
     238                provNote = '' 
     239                lab = tt.var 
     240                if lab in {'*','include Oyr 3D tracers'}: 
     241                  lab = '-copy-' 
     242                elif lab == 'wap (omega)': 
     243                  lab = 'wap' 
     244                  provNote = 'wap (omega)' 
     245                lab = string.replace( string.strip(lab), '_', '-' ) 
     246                if tt.uuid in setu: 
     247                     print 'SEVERE[1]: duplicate uuid: ',tt.__dict__ 
     248                setu.add( tt.uuid ) 
    212249                if ovuu.has_key(tt.vid): 
    213250                  tt1 = ovuu[tt.vid] 
    214                   self.cmv.append( (tt.uuid, (tt.shape,tt.levels,tt.tstyle,gr,smdd[tt.mask]), tt.var, 'from %s' % tt.table, tt.descriptionEx, tt1.vid, \ 
     251                  self.cmv.append( (tt.uuid, (tt.shape,tt.levels,tt.tstyle,gr,smdd[tt.mask]), lab, 'from %s' % tt.table, tt.descriptionEx, tt1.vid, \ 
    215252                    tt1.deflate_level, tt1.shuffle, tt1.ok_max_mean_abs, tt1.flag_meanings, tt1.type, tt1.ok_min_mean_abs, \ 
    216253                    tt1.deflate, tt1.valid_min, tt1.flag_values, tt1.modeling_realm, tt1.valid_max, tt1.positive, 'n%s' % tt.freq, \ 
    217                     '', '', tt.freq, '', '') ) 
    218                   self.rqv.append( (str( uuid.uuid1() ),'%s-%s' % (tt.group,tt.var), tt.uuid, tt.gpid, tt1.priority) ) 
     254                    prov, provNote, tt.freq, -1, '') ) 
     255                  self.rqv.append( (str( uuid.uuid1() ),lab, tt.uuid, tt.gpid, tt1.priority, tt.mip, tt.group) ) 
    219256                  nov += 1 
    220257                else: 
    221                   self.cmv.append( (tt.uuid, (tt.shape,tt.levels,tt.tstyle,gr,smdd[tt.mask]), tt.var, 'from %s' % tt.table, tt.descriptionEx, tt.vid, \ 
     258                  self.cmv.append( (tt.uuid, (tt.shape,tt.levels,tt.tstyle,gr,smdd[tt.mask]), lab, 'from %s' % tt.table, tt.descriptionEx, tt.vid, \ 
    222259                    0, 0, 0, 0, '', 0, \ 
    223260                    0,0,0, '', 0, '', 'n%s' % tt.freq, \ 
    224                     '', '', tt.freq, '', '') ) 
    225                   self.rqv.append( (str( uuid.uuid1() ),'%s-%s' % (tt.group,tt.var), tt.uuid, tt.gpid, 1) ) 
     261                    prov, provNote, tt.freq, -1, '') ) 
     262                  self.rqv.append( (str( uuid.uuid1() ),lab, tt.uuid, tt.gpid, 1, tt.mip, tt.group) ) 
    226263## Variables marked with shape '?' from PMIP are actually defined by OMIP .... 
    227264                if tt.shape == '?': 
     
    260297       u = str( uuid.uuid1() ) 
    261298       kk+=1 
    262        lab = 'ssd.%3.3i' % kk 
     299       lab = 'ssd-%3.3i' % kk 
    263300       description = 'ssd.%3.3i' % kk 
    264301       esd[s] = (u,lab,description,d,lfl,nl) 
     
    272309    eshp = set() 
    273310    ll = [] 
    274     nt_dims = collections.namedtuple( 'dims', ['uuid','label','spid','tmid','cell_methods','cell_measures','description','procNote','prov'] ) 
     311    nt_dims = collections.namedtuple( 'dims', ['uuid','label','spid','tmid','odims','coords','cell_methods','cell_measures','description','procNote','prov'] ) 
    275312    kk = 0 
    276313    strdd = {} 
     
    283320        tmid = etd[tdim][0] 
    284321        kk += 1 
    285         label = 'str.%3.3i' % kk 
     322        label = 'str-%3.3i' % kk 
    286323        proc = '' 
    287         prov = 'CMIP5, OMIP' 
     324        prov = 'CMIP5/OMIP' 
    288325        desc = '' 
    289326        strdd[(dims,cmet,cmea)] = u 
    290         ll.append( nt_dims._make( [u,label,spid,tmid, cmet, cmea, desc, proc, prov] ) ) 
     327        ll.append( nt_dims._make( [u,label,spid,tmid, odim, crd, cmet, cmea, desc, proc, prov] ) ) 
    291328 
    292329    ttt = [ {u'Instantaneous (end of year)', 'instantaneous', 'point', 'Synoptic', u'synoptic', u'time: point'}, 
     
    296333        t = (shp,lvls,sty,gr) 
    297334        tdim, tt = self.dsort_u1( self.dsortdd['groupitem'][0][t], self.dsortdd['groupitem'][1] ) 
     335        d1,odim,d2,crd = self.dsortdd['groupitem'][0][t] 
     336        print 'INFO.099: ',d1,odim,d2,crd 
    298337        tflm, msk = tmsk 
    299338        sdim,lfl,nl = tt 
     
    311350          cmet += ' ' + msk 
    312351        kk += 1 
    313         label = 'str.%3.3i' % kk 
     352        label = 'str-%3.3i' % kk 
    314353        proc = '' 
    315354        prov = 'CMIP5, endorsed MIPs' 
    316355        desc = '' 
    317356        strdd[(shp,lvls,sty,gr,tmsk)] = u 
    318         ll.append( nt_dims._make( [u,label,spid,tmid, cmet, cmea, desc, proc, prov] ) ) 
     357        ll.append( nt_dims._make( [u,label,spid,tmid, odim, crd, cmet, cmea, desc, proc, prov] ) ) 
    319358 
    320359    self.structList = ll 
     
    322361    oo = open( 'test.csv', 'w' ) 
    323362    for l in ll: 
    324       oo.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s,\n' % l ) 
     363      oo.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,\n' % l ) 
    325364    oo.close() 
    326365 
     
    334373          nl = 0 
    335374        elif nl == -2: 
    336           nl = 0 
     375          nl = 1 
     376          pass 
    337377        return (tdim, (sdim,lfl,nl) ) 
    338378 
     
    341381      """Sort the dimensions string into spatial, temporal and other sections, 
    342382       returns a dictionary of tuples: spatial dimensions, other, temporal, coords and a 2nd, keyyed on spatial dimensions with a level count indicator.  """ 
    343       vdims = {'plev3':3,'plev8':8,'alt40':40,'alevhalf':-1,'olevel':-1,'rho':-1,'sdepth':-1,'alevel':-1} 
     383      vdims = {'plev7':7, 'plev':4, 'plevs':17, 'plev3':3,'plev8':8,'alt40':40,'alev1':1, 'alevhalf':-1,'olevel':-1,'rho':-1,'sdepth':-1,'alevel':-1} 
    344384      odims = {'sza5','vegtype','scatratio','dbze','typepdec','vgidx','tau'} 
    345385      dl = sorted( list(dset) ) 
     
    389429          bits = string.split( s, '|' ) 
    390430          nl = -2 
     431          thisb = None 
    391432          for b in bits: 
    392433            if vdims.has_key(b): 
    393434              assert nl == -2, 'Duplicate vertical level count in %s' % s 
    394435              nl = vdims[b] 
     436              thisb = b 
    395437          lcount[s] = nl 
     438          if nl == -1 and s == 'latitude|basin': 
     439            print 'SEVERE: error in level deduction' 
     440            print s, bits, nl, thisb 
     441            raise 
    396442      else: 
    397443        ## input is a set of tuples,  shape, levels, tstyle, o/a 
     
    410456## 'K'?? 'XYK' 
    411457        dd = {'XKT':('latitude|basin','','time','',False), \ 
    412              'XYZKT':('latitude|longitude|%s','effectRad','time','',True), \ 
    413              'XYZT':('latitude|longitude|%s','','time','',True), \ 
     458             'XYZKT':('longitude|latitude|%s','effectRad','time','',True), \ 
     459             'XYZT':('longitude|latitude|%s','','time','',True), \ 
    414460              'KZT':('alevel','spectband','time','',False), \ 
    415               'XYT':('latitude|longitude','','time','',False), \ 
    416               'XYKT':('latitude|longitude','angle','time','',False), \ 
     461              'XYT':('longitude|latitude','','time','',False), \ 
     462              'XYKT':('longitude|latitude','angle','time','',False), \ 
    417463              'YZT':('longitude|%s','','time','',True), \ 
    418               'XYK':('latitude|longitude','snowband','time','',False), \ 
     464              'XYK':('longitude|latitude','snowband','time','',False), \ 
    419465              'K':('sistraits','','time','',False), \ 
    420466              'scalar':('','','time','',False), \ 
     
    486532            else: 
    487533              sc = tt[0] 
    488               if string.find( sc, 'alevel' ) != -1 or string.find( sc, 'olevel' ): 
     534              if (string.find( sc, 'alevel' ) != -1) or (string.find( sc, 'olevel' ) != -1): 
    489535                n = -1 
    490536              else: 
    491537                n = -2 
    492538          lcount[sc] = n 
     539          if n == -1 and sc == 'latitude|basin': 
     540            print 'SEVERE [2]: error in level deduction' 
     541            print sc, tt[0], tt[-1], n 
     542            raise 
    493543          eed[d] = (sc,tt[1],ttdd[d[2]],tt[3]) 
    494544      self.dsortdd[mode] = (eed,lcount) 
     
    496546  def run(self,rq): 
    497547 
    498     main = self.doc.childNodes[0] 
     548    xx = self.doc.getElementsByTagName( 'main' ) 
     549    assert len(xx) == 1, 'Expecting one element named "main", found %s' % len(xx) 
     550    main = xx[0] 
    499551    xsn = [] 
    500552    ff = {} 
     
    514566    self.ff = ff 
    515567 
    516     addex = False 
    517     exrqvg = {} 
    518     if addex: 
     568     
     569    addex = True 
     570    self.prqv = ivg.prepRequestVar(addex) 
     571    self.prqv.run() 
     572    ##exrqvg = {} 
     573    ##if addex: 
    519574      ###  
    520       extravg = [['OMIP', u'OMIP-Oyr', u'OMIP: OMIP-Oyr', 'CMIP5Rev', u'OMIP.Oyr'], 
    521                ['OMIP', u'OMIP-Omon', u'OMIP: OMIP-Omon', 'CMIP5Rev', u'OMIP.Omon'], 
    522                ['OMIP', u'OMIP-day', u'OMIP: OMIP-day', 'CMIP5Rev', u'OMIP.day'], 
    523                ['OMIP', u'OMIP-fx', u'OMIP: OMIP-fx', 'CMIP5Rev', u'OMIP.fx'] ] 
    524       for r in extravg: 
    525         thisuuid = str( uuid.uuid1() ) 
    526         exrqvg[thisuuid] = [thisuuid ,] + r[:] 
     575      ##extravg = [['OMIP', u'OMIP-Oyr', u'OMIP: OMIP-Oyr', 'CMIP5Rev', u'OMIP.Oyr'], 
     576               ##['OMIP', u'OMIP-Omon', u'OMIP: OMIP-Omon', 'CMIP5Rev', u'OMIP.Omon'], 
     577               ##['OMIP', u'OMIP-day', u'OMIP: OMIP-day', 'CMIP5Rev', u'OMIP.day'], 
     578               ##['OMIP', u'OMIP-fx', u'OMIP: OMIP-fx', 'CMIP5Rev', u'OMIP.fx'] ] 
     579      ##for r in extravg: 
     580        ##thisuuid = str( uuid.uuid1() ) 
     581        ##exrqvg[thisuuid] = [thisuuid ,] + r[:] 
    527582     
    528     self.eern = collections.defaultdict( list ) 
    529     self.eern2 = {} 
    530     ixrn = 5 
    531     dups = [] 
    532     ##for k in rq.rqvg.keys(): 
    533       ##if k[0] != '_': 
    534     for i,k in [ (rq.rqvg[k],k) for k in  rq.rqvg.keys() if k[0] != '_'] + [(exrqvg[k],k) for k in exrqvg.keys()]: 
    535         kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'ref', 'refNote', 'refid'] 
    536         kk = ['uuid', 'mip', 'label', 'title', 'ref', 'refNote'] 
     583    ##self.eern = collections.defaultdict( list ) 
     584    ##self.eern2 = {} 
     585    ##ixrn = 5 
     586    ##dups = [] 
     587    ####for k in rq.rqvg.keys(): 
     588      ####if k[0] != '_': 
     589    ##for i,k in [ (rq.rqvg[k],k) for k in  rq.rqvg.keys() if k[0] != '_'] + [(exrqvg[k],k) for k in exrqvg.keys()]: 
     590        ##kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'ref', 'refNote', 'refid'] 
     591        ##kk = ['uuid', 'mip', 'label', 'title', 'ref', 'refNote'] 
    537592        ##i = rq.rqvg[k] 
    538593         
    539         self.eern[i[ixrn]].append( i[0] ) 
    540         k2 = '%s__%s' % (i[ixrn-1],i[ixrn]) 
    541         if self.eern2.has_key( k2 ): 
    542            dups.append( (k2,k,self.eern2[k2]) ) 
    543         self.eern2[k2] = i[0] 
    544         assert i[0] == k, 'Bad key/uuid' 
    545  
    546     assert len( dups ) == 0, 'Duplicate refs: %s, %s' % (str(dups),str(map( lambda x: rq.rqvg[x[1]], dups )) ) 
     594        ##self.eern[i[ixrn]].append( i[0] ) 
     595        ##k2 = '%s__%s' % (i[ixrn-1],i[ixrn]) 
     596        ##if self.eern2.has_key( k2 ): 
     597           ##dups.append( (k2,k,self.eern2[k2]) ) 
     598        ##self.eern2[k2] = i[0] 
     599        ##assert i[0] == k, 'Bad key/uuid' 
     600 
     601    ##assert len( dups ) == 0, 'Duplicate refs: %s, %s' % (str(dups),str(map( lambda x: rq.rqvg[x[1]], dups )) ) 
    547602         
    548603## keys here match section element names in schema 
     
    550605    if self.schemaMode != 'dreq2': 
    551606      sectlist = ['ovar','groupitem','revisedtabitem'] + sectlist 
     607    else: 
     608      sectlist.append( 'requestvar' ) 
    552609 
    553610    for k in sectlist: 
     
    561618      idk = 0 
    562619      if len(lll) > 0: 
    563         dil = ff[k][0].getElementsByTagName('item') 
    564         for d in dil: 
    565           ff[k][0].removeChild(d) 
     620## 
     621## remove example items, xcept where this has been done in previous function 
     622## 
     623        if k not in ['xxxx']: 
     624          dil = ff[k][0].getElementsByTagName('item') 
     625          for d in dil: 
     626            ff[k][0].removeChild(d) 
     627 
    566628        vare = {} 
    567629        vare2 = {} 
     
    608670##- sn; units; description; procnote; procComment; prov 
    609671##['label', 'title', 'sn', 'units', 'description', 'procnote', 'procComment', 'prov'] 
    610             thisl = string.strip(str( ll[0] ) ) 
     672            thisl = string.replace(string.strip(str( ll[0] ) ), '_', '-' ) 
    611673            thisuuid = str(i) 
    612674            if not ( self.replItems.has_key( str(i) ) or self.remo.has_key(str(i)) ): 
     
    701763                item.setAttribute( tag, new ) 
    702764################################## 
    703           elif k == 'revisedtabitem': 
     765          elif k in ['revisedtabitem','requestvar']: 
    704766#### need to fill gaps in variable groups --- or do better job upstream ##########  !!!!!!!!!!!!!!!! 
    705767## - table; mip; uuid; priority 
     
    709771## 
    710772            kk = ['var', 'table', 'mip', 'vid', 'priority'] 
    711             kvg = 'CMIP5Rev__%s.%s' % ( ll[2],ll[1] ) 
    712             kvg3 = 'rev__%s.%s' % ( ll[2],ll[1] ) 
    713             if self.eern2.has_key(kvg): 
    714               vgid = self.eern2[kvg] 
    715             elif self.eern2.has_key(kvg3): 
    716               vgid = self.eern2[kvg3] 
    717             elif cmip5GrpLk[ll[1]].has_key(ll[0]): 
    718               g2 = cmip5GrpLk[ll[1]][ll[0]] 
    719               kvg2 = 'CMIP5Rev__%s.%s' % ( ll[2],g2 ) 
    720               if self.eern2.has_key(kvg2): 
    721                 vgid = self.eern2[kvg2] 
    722               else: 
    723                 vgid = '__vg_not_found_1__' 
    724                 self.err0010[kvg] += 1 
    725             else: 
    726               vgid = '__vg_not_found_2__' 
    727               self.err0010[kvg] += 1 
     773    ##self.rqvinfo = ('uuid','label','vid','gpid','priority','mip','table' ) 
     774            vgid = self.prqv.rqv_vg[ll[0]] 
     775            ##kvg = 'CMIP5Rev__%s.%s' % ( ll[2],ll[1] ) 
     776            ##kvg3 = 'rev__%s.%s' % ( ll[2],ll[1] ) 
     777            ##if self.eern2.has_key(kvg): 
     778              ##vgid = self.eern2[kvg] 
     779            ##elif self.eern2.has_key(kvg3): 
     780              ##vgid = self.eern2[kvg3] 
     781            ##elif cmip5GrpLk[ll[1]].has_key(ll[0]): 
     782              ##g2 = cmip5GrpLk[ll[1]][ll[0]] 
     783              ##kvg2 = 'CMIP5Rev__%s.%s' % ( ll[2],g2 ) 
     784              ##if self.eern2.has_key(kvg2): 
     785                ##vgid = self.eern2[kvg2] 
     786              ##else: 
     787                ##vgid = '__vg_not_found_1__' 
     788                ##self.err0010[kvg] += 1 
     789            ##else: 
     790              ##vgid = '__vg_not_found_2__' 
     791              ##self.err0010[kvg] += 1 
    728792            thisuuid = str( uuid.uuid1() ) 
    729793            thisl = string.strip(str( ll[0] ) ) 
     
    817881  def write2(self): 
    818882    """write sections for cmor variable, request variable, structure, spatial and temporal dimensions""" 
    819     for ksect in [ u'cmorvar',  u'spatialshape', u'temporalshape', u'structure', 'requestvar']: 
     883    for ksect in [ u'cmorvar',  u'spatialshape', u'temporalshape', u'structure', u'requestvar']: 
     884    ##for ksect in [ u'cmorvar',  u'spatialshape', u'temporalshape', u'structure']: 
    820885        dil = self.ff[ksect][0].getElementsByTagName('item') 
    821         for d in dil: 
    822           self.ff[ksect][0].removeChild(d) 
     886        if ksect != 'requestvar': 
     887          for d in dil: 
     888            self.ff[ksect][0].removeChild(d) 
    823889        if ksect == u'cmorvar': 
    824890          for r in self.cmv: 
     
    853919              item.setAttribute( self.dimsTimeInfo[i], str( rr[i] ) ) 
    854920            self.ff[ksect][0].appendChild( item ) 
     921        elif ksect == u'requestvar': 
     922          ##kk = ['var', 'table', 'mip', 'vid', 'priority'] 
     923          kk = ['label', 'table', 'mip', 'vid', 'priority','vgid','title','uuid'] 
     924          kktr = {'vgid':'gpid', 'title':'label'} 
     925    ##self.rqvinfo = ('uuid','label','vid','gpid','priority','mip','table' ) 
     926          for t in self.rqv: 
     927            item = self.doc.createElement( 'item' ) 
     928            ###assert len(t) == len(kk), 'BAD request variable line: %s' % str(t) 
     929            for i in range(len(kk)): 
     930              k = kktr.get( kk[i], kk[i] ) 
     931              v = t[  self.rqvinfo.index(k) ] 
     932              if k == 'priority': 
     933                item.setAttribute( kk[i], str( int(v) ) ) 
     934              else: 
     935                item.setAttribute( kk[i], str( v ) ) 
     936            self.ff[ksect][0].appendChild( item ) 
     937             
    855938    ##self.dimsTimeInfo = ['uuid','label','title','dimensions'] 
    856939    ##self.dimsSpaceInfo = ['uuid','label','title','dimensions','levelFlag','levels'] 
     
    9391022mode = 'dreq2' 
    9401023sampleXml = '../framework/out/%sSample.xml' % mode 
    941 cmip5GrpLk = collections.defaultdict( dict ) 
    9421024from scansh import rq 
    9431025 
    944 for k in rq.cmip5Grps.keys(): 
    945   bits = string.split(k,'_') 
    946   tab = bits[0] 
    947   for v in rq.cmip5Grps[k]: 
    948     cmip5GrpLk[tab][v] = k 
     1026##cmip5GrpLk = collections.defaultdict( dict ) 
     1027##for k in rq.cmip5Grps.keys(): 
     1028  ##bits = string.split(k,'_') 
     1029  ##tab = bits[0] 
     1030  ##for v in rq.cmip5Grps[k]: 
     1031    ##cmip5GrpLk[tab][v] = k 
    9491032 
    9501033m = main(sampleXml, rq,run=True, schemaMode=mode) 
    9511034 
    9521035if len(m.err0010.keys()) > 0: 
    953   ks = m.err0010.keys() 
     1036  ks = m.prqv.err0010.keys() 
    9541037  ks.sort() 
    9551038  for k in ks: 
    956     print 'ERROR.001.0010: variable group not identified: %s [%s]' % (k,m.err0010[k]) 
     1039    print 'ERROR.001.0010: variable group not identified: %s [%s]' % (k,m.prqv.err0010[k]) 
     1040  ks = m.prqv.err0020.keys() 
     1041  ks.sort() 
     1042  for k in ks: 
     1043    print 'ERROR.001.0020: variable group not identified: %s [%s]' % (k,m.prqv.err0020[k]) 
  • CMIP6dreqbuild/trunk/src/workbook/trial.xml

    r370 r397  
    11<?xml version="1.0" ?> 
     2<document xmlns="urn:w3id.org:cmip6.dreq.dreq:a" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="out/dreqSchema.xsd"> 
     3<prologue> 
     4<dc:title>Draft CMIP6 Data Request</dc:title> 
     5<dc:creator>Martin Juckes</dc:creator> 
     6<dc:date>2015-10-01</dc:date> 
     7</prologue> 
    28<main> 
    3 <institute class="vocab" id="cmip.drv.001" title="Institute"> 
    4 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    5 <item description="Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK." id="tmpid.0001" isni="0000 0001 2299 303X  [UKMO]" label="MOHC" title="MOHC" url="http://www.metoffice.gov.uk; http://www.metoffice.gov.uk/climate-guide/science/science-behind-climate-change/hadley" uuid="675210ac-3a81-11e5-9ed5-ac72891c3257"/> 
    6 <item description="Institut Pierre Simon Laplace, Paris, France" id="tmpid.0002" isni="0000 0000 9000 8794" label="IPSL" title="IPSL" url="https://www.ipsl.fr/en/" uuid="675214f8-3a81-11e5-9ed5-ac72891c3257"/> 
    7 <item description="Centre National de Recherches Meteorologiques, Meteo-France, Toulouse, France) and CERFACS (Centre Europeen de Recherches et de Formation Avancee en Calcul Scientifique, Toulouse, France" id="tmpid.0003" isni="0000 0004 0640 7549 " label="CNRM-CERFACS" title="CNRM-CERFACS" url="http://www.cerfacs.fr/" uuid="6752196c-3a81-11e5-9ed5-ac72891c3257"/> 
    8 <item description="Norwegian Climate Centre" id="tmpid.0004" isni="" label="NCC" title="NCC" url="http://folk.uib.no/ngfhd/EarthClim/index.htm" uuid="67521da4-3a81-11e5-9ed5-ac72891c3257"/> 
    9 <item description="Australian Commonwealth Scientific and Industrial Research Organization (CSIRO) Marine and Atmospheric Research (Melbourne, Australia) in collaboration with the Queensland Climate Change Centre of Excellence (QCCCE) (Brisbane, Australia)" id="tmpid.0005" isni="0000 0001 2173 2719 ;  0000 0004 0380 0628 [Queensland Government]" label="CSIRO-QCCCE" title="CSIRO-QCCCE" url="www.csiro.au ; http://www.ehp.qld.gov.au/climatechange/index.html " uuid="675221e6-3a81-11e5-9ed5-ac72891c3257"/> 
    10 <item description="Canadian Centre for Climate Modelling and Analysis, Victoria, BC, Canada" id="tmpid.0006" isni="" label="CCCma" title="CCCma" url="" uuid="675229e8-3a81-11e5-9ed5-ac72891c3257"/> 
    11 <item description="Institute for Numerical Mathematics, Moscow, Russia" id="tmpid.0007" isni="" label="INM" title="INM" url="" uuid="67522e20-3a81-11e5-9ed5-ac72891c3257"/> 
    12 <item description="Meteorological Research Institute, Tsukuba, Japan" id="tmpid.0008" isni="" label="MRI" title="MRI" url="" uuid="67523258-3a81-11e5-9ed5-ac72891c3257"/> 
    13 <item description="AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), NIES (National Institute for Environmental Studies, Ibaraki, Japan), JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan)" id="tmpid.0009" isni="" label="MIROC" title="MIROC" url="" uuid="67523672-3a81-11e5-9ed5-ac72891c3257"/> 
    14 <item description="JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), and NIES (National Institute for Environmental Studies, Ibaraki, Japan)" id="tmpid.0010" isni="" label="MIROC" title="MIROC" url="" uuid="67523aaa-3a81-11e5-9ed5-ac72891c3257"/> 
    15 <item description="Goddard Institute for Space Studies, New York, NY" id="tmpid.0011" isni="" label="NASA-GISS" title="NASA-GISS" url="" uuid="67523ece-3a81-11e5-9ed5-ac72891c3257"/> 
    16 <item description="National Center for Atmospheric Research, Boulder, CO, USA" id="tmpid.0012" isni="0000 0004 0637 9680 " label="NCAR" title="NCAR" url="" uuid="675242de-3a81-11e5-9ed5-ac72891c3257"/> 
    17 <item description="NOAA GFDL, 201 Forrestal Rd, Princeton, NJ, 08540" id="tmpid.0013" isni="0000 0000 9269 5516 " label="NOAA-GFDL" title="NOAA-GFDL" url="" uuid="675246f8-3a81-11e5-9ed5-ac72891c3257"/> 
    18 <item description="Beijing Climate Center,China Meteorological Administration,China" id="tmpid.0014" isni="0000 0001 2234 550X [CMA]" label="BCC" title="BCC" url="" uuid="67524b26-3a81-11e5-9ed5-ac72891c3257"/> 
    19 <item description="Max Planck Institute for Meteorology" id="tmpid.0015" isni="" label="MPI-M" title="MPI-M" url="" uuid="67524f5e-3a81-11e5-9ed5-ac72891c3257"/> 
    20 <item description="Institute of Atmospheric Physics, Chinese Academy of Sciences, Beijing, China and Tsinghua University" id="tmpid.0016" isni="" label="LASG-CESS" title="LASG-CESS" url="" uuid="67525382-3a81-11e5-9ed5-ac72891c3257"/> 
    21 <item description="Global Modeling and Assimilation Office, NASA Goddard Space Flight Center, Greenbelt, MD 20771" id="tmpid.0017" isni="" label="NASA-GMAO" title="NASA-GMAO" url="" uuid="67525788-3a81-11e5-9ed5-ac72891c3257"/> 
    22 <item description="GCESS,BNU,Beijing,China" id="tmpid.0018" isni="" label="BNU" title="BNU" url="" uuid="67525ba2-3a81-11e5-9ed5-ac72891c3257"/> 
    23 <item description="National Center for Atmospheric Research, Boulder, CO, USA" id="tmpid.0019" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url="" uuid="67525f80-3a81-11e5-9ed5-ac72891c3257"/> 
    24 <item description="PNNL (Pacific Northwest National Laboratory) Richland, WA, USA/NCAR (National Center for Atmospheric Research) Boulder, CO, USA" id="tmpid.0020" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url="" uuid="67526372-3a81-11e5-9ed5-ac72891c3257"/> 
    25 <item description="NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" id="tmpid.0021" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url="" uuid="67526ae8-3a81-11e5-9ed5-ac72891c3257"/> 
    26 <item description="Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia" id="tmpid.0022" isni="" label="CSIRO-BOM" title="CSIRO-BOM" url="" uuid="67526ef8-3a81-11e5-9ed5-ac72891c3257"/> 
    27 <item description="Nonhydrostatic Icosahedral Atmospheric Model (NICAM) Group (RIGC-JAMSTEC/AORI-U.Tokyo/AICS-RIKEN,Japan)" id="tmpid.0023" isni="" label="NICAM" title="NICAM" url="" uuid="67527312-3a81-11e5-9ed5-ac72891c3257"/> 
    28 <item description="Centro Euro-Mediterraneo per i Cambiamenti Climatici, Bologna, Italy" id="tmpid.0024" isni="" label="CMCC" title="CMCC" url="" uuid="67527704-3a81-11e5-9ed5-ac72891c3257"/> 
    29 <item description="The First Institution of Oceanography,SOA,Qingdao,China" id="tmpid.0025" isni="" label="FIO" title="FIO" url="" uuid="67527b32-3a81-11e5-9ed5-ac72891c3257"/> 
    30 <item description="Institute of Atmospheric Physics, Chinese Academy of Sciences,Beijing,China" id="tmpid.0026" isni="" label="LASG-IAP" title="LASG-IAP" url="" uuid="67527f2e-3a81-11e5-9ed5-ac72891c3257"/> 
    31 <item description="National Institute of Meteorological Research, Seoul, South Korea" id="tmpid.0027" isni="" label="NIMR-KMA" title="NIMR-KMA" url="" uuid="6752832a-3a81-11e5-9ed5-ac72891c3257"/> 
    32 <item description="European Earth System Model" id="tmpid.0028" isni="" label="ICHEC" title="ICHEC" url="" uuid="67528712-3a81-11e5-9ed5-ac72891c3257"/> 
    33 <item description="Center for Ocean-Land-Atmosphere Studies, Calverton, MD" id="tmpid.0029" isni="" label="COLA-CFS" title="COLA-CFS" url="" uuid="67528c80-3a81-11e5-9ed5-ac72891c3257"/> 
    34 <item description="National Centers for Environmental Prediction, Camp Springs, MD" id="tmpid.0030" isni="" label="NOAA-NCEP" title="NOAA-NCEP" url="" uuid="67529090-3a81-11e5-9ed5-ac72891c3257"/> 
     9<institute class="vocab" id="cmip.drv.001" title="Institute" uid="SECTION:institute"> 
     10<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     11<item description="Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK." id="tmpid.0001" isni="0000 0001 2299 303X  [UKMO]" label="MOHC" title="MOHC" url="http://www.metoffice.gov.uk; http://www.metoffice.gov.uk/climate-guide/science/science-behind-climate-change/hadley"/> 
     12<item description="Institut Pierre Simon Laplace, Paris, France" id="tmpid.0002" isni="0000 0000 9000 8794" label="IPSL" title="IPSL" url="https://www.ipsl.fr/en/"/> 
     13<item description="Centre National de Recherches Meteorologiques, Meteo-France, Toulouse, France) and CERFACS (Centre Europeen de Recherches et de Formation Avancee en Calcul Scientifique, Toulouse, France" id="tmpid.0003" isni="0000 0004 0640 7549 " label="CNRM-CERFACS" title="CNRM-CERFACS" url="http://www.cerfacs.fr/"/> 
     14<item description="Norwegian Climate Centre" id="tmpid.0004" isni="" label="NCC" title="NCC" url="http://folk.uib.no/ngfhd/EarthClim/index.htm"/> 
     15<item description="Australian Commonwealth Scientific and Industrial Research Organization (CSIRO) Marine and Atmospheric Research (Melbourne, Australia) in collaboration with the Queensland Climate Change Centre of Excellence (QCCCE) (Brisbane, Australia)" id="tmpid.0005" isni="0000 0001 2173 2719 ;  0000 0004 0380 0628 [Queensland Government]" label="CSIRO-QCCCE" title="CSIRO-QCCCE" url="www.csiro.au ; http://www.ehp.qld.gov.au/climatechange/index.html "/> 
     16<item description="Canadian Centre for Climate Modelling and Analysis, Victoria, BC, Canada" id="tmpid.0006" isni="" label="CCCma" title="CCCma" url=""/> 
     17<item description="Institute for Numerical Mathematics, Moscow, Russia" id="tmpid.0007" isni="" label="INM" title="INM" url=""/> 
     18<item description="Meteorological Research Institute, Tsukuba, Japan" id="tmpid.0008" isni="" label="MRI" title="MRI" url=""/> 
     19<item description="AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), NIES (National Institute for Environmental Studies, Ibaraki, Japan), JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan)" id="tmpid.0009" isni="" label="MIROC" title="MIROC" url=""/> 
     20<item description="JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), and NIES (National Institute for Environmental Studies, Ibaraki, Japan)" id="tmpid.0010" isni="" label="MIROC" title="MIROC" url=""/> 
     21<item description="Goddard Institute for Space Studies, New York, NY" id="tmpid.0011" isni="0000 0001 1456 7559  [NASA]" label="NASA-GISS" title="NASA-GISS" url="http://www.giss.nasa.gov/"/> 
     22<item description="National Center for Atmospheric Research, Boulder, CO, USA" id="tmpid.0012" isni="0000 0004 0637 9680 " label="NCAR" title="NCAR" url="ncar.ucar.edu"/> 
     23<item description="NOAA GFDL, 201 Forrestal Rd, Princeton, NJ, 08540" id="tmpid.0013" isni="0000 0000 9269 5516 " label="NOAA-GFDL" title="NOAA-GFDL" url="www.gfdl.noaa.gov"/> 
     24<item description="Beijing Climate Center,China Meteorological Administration,China" id="tmpid.0014" isni="0000 0001 2234 550X [CMA]" label="BCC" title="BCC" url=""/> 
     25<item description="Max Planck Institute for Meteorology" id="tmpid.0015" isni="" label="MPI-M" title="MPI-M" url=""/> 
     26<item description="Institute of Atmospheric Physics, Chinese Academy of Sciences, Beijing, China and Tsinghua University" id="tmpid.0016" isni="" label="LASG-CESS" title="LASG-CESS" url=""/> 
     27<item description="Global Modeling and Assimilation Office, NASA Goddard Space Flight Center, Greenbelt, MD 20771" id="tmpid.0017" isni="0000 0001 1456 7559  [NASA]" label="NASA-GMAO" title="NASA-GMAO" url=""/> 
     28<item description="GCESS,BNU,Beijing,China (College of Global Change and Earth System Science, Beijing Normal University)" id="tmpid.0018" isni="" label="BNU" title="BNU" url=""/> 
     29<item description="National Center for Atmospheric Research, Boulder, CO, USA" id="tmpid.0019" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url=""/> 
     30<item description="PNNL (Pacific Northwest National Laboratory) Richland, WA, USA/NCAR (National Center for Atmospheric Research) Boulder, CO, USA" id="tmpid.0020" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url=""/> 
     31<item description="NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" id="tmpid.0021" isni="" label="NSF-DOE-NCAR" title="NSF-DOE-NCAR" url=""/> 
     32<item description="Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia" id="tmpid.0022" isni="0000 0001 2173 2719  [CSIRO]; 0000 0004 0628 7751 [BOM]" label="CSIRO-BOM" title="CSIRO-BOM" url="www.csiro.au ; http://www.bom.gov.au/"/> 
     33<item description="Nonhydrostatic Icosahedral Atmospheric Model (NICAM) Group (RIGC-JAMSTEC/AORI-U.Tokyo/AICS-RIKEN,Japan)" id="tmpid.0023" isni="" label="NICAM" title="NICAM" url=""/> 
     34<item description="Centro Euro-Mediterraneo per i Cambiamenti Climatici, Bologna, Italy" id="tmpid.0024" isni="0000 0004 1761 0884" label="CMCC" title="CMCC" url="www.cmcc.it"/> 
     35<item description="The First Institution of Oceanography,SOA,Qingdao,China" id="tmpid.0025" isni="" label="FIO" title="FIO" url=""/> 
     36<item description="Institute of Atmospheric Physics, Chinese Academy of Sciences,Beijing,China" id="tmpid.0026" isni="" label="LASG-IAP" title="LASG-IAP" url=""/> 
     37<item description="National Institute of Meteorological Research, Seoul, South Korea" id="tmpid.0027" isni="" label="NIMR-KMA" title="NIMR-KMA" url=""/> 
     38<item description="European Earth System Model" id="tmpid.0028" isni="" label="ICHEC" title="ICHEC" url=""/> 
     39<item description="Center for Ocean-Land-Atmosphere Studies, Calverton, MD" id="tmpid.0029" isni="" label="COLA-CFS" title="COLA-CFS" url=""/> 
     40<item description="National Centers for Environmental Prediction, Camp Springs, MD" id="tmpid.0030" isni="" label="NOAA-NCEP" title="NOAA-NCEP" url=""/> 
    3541</institute> 
    36 <model class="vocab" id="cmip.drv.002" title="Model"> 
    37 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    38 <item description="" id="tmpid.0001" label="ACCESS" title="" uuid="67548a94-3a81-11e5-9ed5-ac72891c3257"/> 
    39 <item description="" id="tmpid.0002" label="AWI-CM" title="" uuid="67548e36-3a81-11e5-9ed5-ac72891c3257"/> 
    40 <item description="" id="tmpid.0003" label="BCC" title="" uuid="6754921e-3a81-11e5-9ed5-ac72891c3257"/> 
    41 <item description="" id="tmpid.0004" label="BESM" title="" uuid="6754964c-3a81-11e5-9ed5-ac72891c3257"/> 
    42 <item description="" id="tmpid.0005" label="BNU" title="" uuid="67549a3e-3a81-11e5-9ed5-ac72891c3257"/> 
    43 <item description="" id="tmpid.0006" label="CAMS-CSM" title="" uuid="67549de0-3a81-11e5-9ed5-ac72891c3257"/> 
    44 <item description="" id="tmpid.0007" label="CanESM" title="" uuid="6754a1e6-3a81-11e5-9ed5-ac72891c3257"/> 
    45 <item description="" id="tmpid.0008" label="CAS-ESM" title="" uuid="6754a56a-3a81-11e5-9ed5-ac72891c3257"/> 
    46 <item description="" id="tmpid.0009" label="CESM" title="" uuid="6754a8c6-3a81-11e5-9ed5-ac72891c3257"/> 
    47 <item description="" id="tmpid.0010" label="CESS-THU" title="" uuid="6754ac2c-3a81-11e5-9ed5-ac72891c3257"/> 
    48 <item description="" id="tmpid.0011" label="CMCC" title="" uuid="6754b21c-3a81-11e5-9ed5-ac72891c3257"/> 
    49 <item description="" id="tmpid.0012" label="CNRM" title="" uuid="6754b582-3a81-11e5-9ed5-ac72891c3257"/> 
    50 <item description="" id="tmpid.0013" label="EC-Earth" title="" uuid="6754b8e8-3a81-11e5-9ed5-ac72891c3257"/> 
    51 <item description="" id="tmpid.0014" label="FGOALS" title="" uuid="6754bc62-3a81-11e5-9ed5-ac72891c3257"/> 
    52 <item description="" id="tmpid.0015" label="FIO" title="" uuid="6754bfd2-3a81-11e5-9ed5-ac72891c3257"/> 
    53 <item description="" id="tmpid.0016" label="GFDL" title="" uuid="6754c338-3a81-11e5-9ed5-ac72891c3257"/> 
    54 <item description="" id="tmpid.0017" label="GISS" title="" uuid="6754c694-3a81-11e5-9ed5-ac72891c3257"/> 
    55 <item description="" id="tmpid.0018" label="IITM" title="" uuid="6754ca22-3a81-11e5-9ed5-ac72891c3257"/> 
    56 <item description="" id="tmpid.0019" label="INM" title="" uuid="6754cd9c-3a81-11e5-9ed5-ac72891c3257"/> 
    57 <item description="" id="tmpid.0020" label="IPSL" title="" uuid="6754d134-3a81-11e5-9ed5-ac72891c3257"/> 
    58 <item description="" id="tmpid.0021" label="MIROC6-CGCM" title="" uuid="6754d49a-3a81-11e5-9ed5-ac72891c3257"/> 
    59 <item description="" id="tmpid.0022" label="MIROC-ESM" title="" uuid="6754d7f6-3a81-11e5-9ed5-ac72891c3257"/> 
    60 <item description="" id="tmpid.0023" label="NICAM" title="" uuid="6754db70-3a81-11e5-9ed5-ac72891c3257"/> 
    61 <item description="" id="tmpid.0024" label="MPI-ESM" title="" uuid="6754decc-3a81-11e5-9ed5-ac72891c3257"/> 
    62 <item description="" id="tmpid.0025" label="MRI-ESM1-x" title="" uuid="6754e246-3a81-11e5-9ed5-ac72891c3257"/> 
    63 <item description="" id="tmpid.0026" label="MRI-AGCM3-xS" title="" uuid="6754e5b6-3a81-11e5-9ed5-ac72891c3257"/> 
    64 <item description="" id="tmpid.0027" label="NorESM" title="" uuid="6754e9b2-3a81-11e5-9ed5-ac72891c3257"/> 
    65 <item description="" id="tmpid.0028" label="NUIST-CSM" title="" uuid="6754ed5e-3a81-11e5-9ed5-ac72891c3257"/> 
    66 <item description="" id="tmpid.0029" label="UKESM" title="" uuid="6754f150-3a81-11e5-9ed5-ac72891c3257"/> 
    67 <item description="" id="tmpid.0030" label="HadGEM3" title="" uuid="6754f4b6-3a81-11e5-9ed5-ac72891c3257"/> 
    68 <item description="" id="tmpid.0031" label="KMA-ACE" title="" uuid="6754fab0-3a81-11e5-9ed5-ac72891c3257"/> 
    69 <item description="" id="tmpid.0032" label="UKESM--KMA" title="" uuid="6754fe34-3a81-11e5-9ed5-ac72891c3257"/> 
     42<model class="vocab" id="cmip.drv.002" title="Model" uid="SECTION:model"> 
     43<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     44<item description="" id="tmpid.0001" label="ACCESS" title=""/> 
     45<item description="" id="tmpid.0002" label="AWI-CM" title=""/> 
     46<item description="" id="tmpid.0003" label="BCC" title=""/> 
     47<item description="" id="tmpid.0004" label="BESM" title=""/> 
     48<item description="" id="tmpid.0005" label="BNU" title=""/> 
     49<item description="" id="tmpid.0006" label="CAMS-CSM" title=""/> 
     50<item description="" id="tmpid.0007" label="CanESM" title=""/> 
     51<item description="" id="tmpid.0008" label="CAS-ESM" title=""/> 
     52<item description="" id="tmpid.0009" label="CESM" title=""/> 
     53<item description="" id="tmpid.0010" label="CESS-THU" title=""/> 
     54<item description="" id="tmpid.0011" label="CMCC" title=""/> 
     55<item description="" id="tmpid.0012" label="CNRM" title=""/> 
     56<item description="" id="tmpid.0013" label="EC-Earth" title=""/> 
     57<item description="" id="tmpid.0014" label="FGOALS" title=""/> 
     58<item description="" id="tmpid.0015" label="FIO" title=""/> 
     59<item description="" id="tmpid.0016" label="GFDL" title=""/> 
     60<item description="" id="tmpid.0017" label="GISS" title=""/> 
     61<item description="" id="tmpid.0018" label="IITM" title=""/> 
     62<item description="" id="tmpid.0019" label="INM" title=""/> 
     63<item description="" id="tmpid.0020" label="IPSL" title=""/> 
     64<item description="" id="tmpid.0021" label="MIROC6-CGCM" title=""/> 
     65<item description="" id="tmpid.0022" label="MIROC-ESM" title=""/> 
     66<item description="" id="tmpid.0023" label="NICAM" title=""/> 
     67<item description="" id="tmpid.0024" label="MPI-ESM" title=""/> 
     68<item description="" id="tmpid.0025" label="MRI-ESM1-x" title=""/> 
     69<item description="" id="tmpid.0026" label="MRI-AGCM3-xS" title=""/> 
     70<item description="" id="tmpid.0027" label="NorESM" title=""/> 
     71<item description="" id="tmpid.0028" label="NUIST-CSM" title=""/> 
     72<item description="" id="tmpid.0029" label="UKESM" title=""/> 
     73<item description="" id="tmpid.0030" label="HadGEM3" title=""/> 
     74<item description="" id="tmpid.0031" label="KMA-ACE" title=""/> 
     75<item description="" id="tmpid.0032" label="UKESM--KMA" title=""/> 
    7076</model> 
    71 <physicsvers class="vocab" id="cmip.drv.003" title="Physics Version"> 
    72 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    73 <item description="dummyAt" id="001.003.001" label="example-01" title="dummy title string" uuid="215e7e6e-3a81-11e5-882e-ac72891c3257"/> 
     77<physicsvers class="vocab" id="cmip.drv.003" title="Physics Version" uid="SECTION:physicsvers"> 
     78<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     79<item description="dummyAt" id="001.003.001" label="example-01" title="dummy title string" uid="c2c151e8-6838-11e5-b0d3-5404a60d96b5"/> 
    7480</physicsvers> 
    75 <initialisationmethod class="vocab" id="cmip.drv.004" title="Initialisation Method"> 
    76 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    77 <item description="dummyAt" id="001.004.001" label="example-01" title="dummy title string" uuid="215eb3c0-3a81-11e5-882e-ac72891c3257"/> 
     81<initialisationmethod class="vocab" id="cmip.drv.004" title="Initialisation Method" uid="SECTION:initialisationmethod"> 
     82<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     83<item description="dummyAt" id="001.004.001" label="example-01" title="dummy title string" uid="c2c18a82-6838-11e5-b0d3-5404a60d96b5"/> 
    7884</initialisationmethod> 
    79 <modelComp class="vocab" id="cmip.drv.005" title="Model Components"> 
    80 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    81 <item componentType="dummyAt" id="001.005.001" label="example-01" sizeH="dummyAt" sizeV="dummyAt" title="dummy title string" uuid="215eec50-3a81-11e5-882e-ac72891c3257"/> 
     85<modelComp class="vocab" id="cmip.drv.005" title="Model Components" uid="SECTION:modelComp"> 
     86<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     87<item componentType="dummyAt" id="001.005.001" label="example-01" sizeH="dummyAt" sizeV="dummyAt" title="dummy title string" uid="c2c1c4a2-6838-11e5-b0d3-5404a60d96b5"/> 
    8288</modelComp> 
    83 <activity class="vocab" id="cmip.drv.006" title="Coordinating activity"> 
    84 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    85 <item id="tmpid.0001" label="CMIP6" status="" title="Coupled Model Intercomparison Project, Phase 6" url="http://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6" uuid="67535df4-3a81-11e5-9ed5-ac72891c3257"/> 
    86 <item id="tmpid.0002" label="AerChemMIP" status="" title="Aerosols and Chemistry Model Intercomparison Project" url="" uuid="67536484-3a81-11e5-9ed5-ac72891c3257"/> 
    87 <item id="tmpid.0003" label="C4MIP" status="" title="Coupled Climate Carbon Cycle Model Intercomparison Project" url="" uuid="67536a88-3a81-11e5-9ed5-ac72891c3257"/> 
    88 <item id="tmpid.0004" label="CFMIP" status="" title="Cloud Feedback Model Intercomparison Project" url="" uuid="6753710e-3a81-11e5-9ed5-ac72891c3257"/> 
    89 <item id="tmpid.0005" label="DAMIP" status="" title="Detection and Attribution Model Intercomparison Project" url="" uuid="6753778a-3a81-11e5-9ed5-ac72891c3257"/> 
    90 <item id="tmpid.0006" label="DCPP" status="" title="Decadal Climate Prediction Project" url="" uuid="67537e74-3a81-11e5-9ed5-ac72891c3257"/> 
    91 <item id="tmpid.0007" label="FAFMIP" status="" title="Flux-Anomaly-Forced Model Intercomparison Project" url="" uuid="6753850e-3a81-11e5-9ed5-ac72891c3257"/> 
    92 <item id="tmpid.0008" label="GeoMIP" status="" title="Geoengineering Model Intercomparison Project" url="" uuid="67538fa4-3a81-11e5-9ed5-ac72891c3257"/> 
    93 <item id="tmpid.0009" label="GMMIP" status="" title="Global Monsoons Model Intercomparison Project" url="" uuid="675395e4-3a81-11e5-9ed5-ac72891c3257"/> 
    94 <item id="tmpid.0010" label="HighResMIP" status="" title="High Resolution Model Intercomparison Project" url="https://dev.knmi.nl/projects/highresmip/wiki" uuid="67539bc0-3a81-11e5-9ed5-ac72891c3257"/> 
    95 <item id="tmpid.0011" label="ISMIP6" status="" title="Ice Sheet Model Intercomparison Project for CMIP6" url="" uuid="6753a1d8-3a81-11e5-9ed5-ac72891c3257"/> 
    96 <item id="tmpid.0012" label="LS3MIP" status="" title="Land Surface, Snow and Soil Moisture MIP" url="" uuid="6753a8a4-3a81-11e5-9ed5-ac72891c3257"/> 
    97 <item id="tmpid.0013" label="LUMIP" status="" title="Land-Use Model Intercomparison Project" url="" uuid="6753ad90-3a81-11e5-9ed5-ac72891c3257"/> 
    98 <item id="tmpid.0014" label="OMIP" status="" title="Ocean Model Intercomparison Project" url="" uuid="6753b678-3a81-11e5-9ed5-ac72891c3257"/> 
    99 <item id="tmpid.0015" label="PDRMIP" status="withdrawn" title="Precipitation Driver and Response Model Intercomparison Project" url="" uuid="6753bed4-3a81-11e5-9ed5-ac72891c3257"/> 
    100 <item id="tmpid.0016" label="PMIP" status="" title="Palaeoclimate Modelling Intercomparison Project" url="" uuid="6753c65e-3a81-11e5-9ed5-ac72891c3257"/> 
    101 <item id="tmpid.0017" label="RFMIP" status="" title="Radiative Forcing Model Intercomparison Project" url="" uuid="6753cb86-3a81-11e5-9ed5-ac72891c3257"/> 
    102 <item id="tmpid.0018" label="ScenarioMIP" status="" title="Scenario Model Intercomparison Project" url="" uuid="6753cfdc-3a81-11e5-9ed5-ac72891c3257"/> 
    103 <item id="tmpid.0019" label="SolarMIP" status="merged with DAMIP" title="Solar Model Intercomparison Project" url="" uuid="6753d432-3a81-11e5-9ed5-ac72891c3257"/> 
    104 <item id="tmpid.0020" label="VolMIP" status="" title="Volcanic Forcings Model Intercomparison Project" url="" uuid="6753da9a-3a81-11e5-9ed5-ac72891c3257"/> 
    105 <item id="tmpid.0021" label="CORDEX" status="Diagnostic" title="" url="" uuid="6753df90-3a81-11e5-9ed5-ac72891c3257"/> 
    106 <item id="tmpid.0022" label="DynVar" status="Diagnostic" title="" url="" uuid="6753e3aa-3a81-11e5-9ed5-ac72891c3257"/> 
    107 <item id="tmpid.0023" label="SIMIP" status="Diagnostic" title="" url="" uuid="6753e7ba-3a81-11e5-9ed5-ac72891c3257"/> 
    108 <item id="tmpid.0024" label="VIACSAB" status="Diagnostic" title="" url="" uuid="6753ebc0-3a81-11e5-9ed5-ac72891c3257"/> 
     89<activity class="vocab" id="cmip.drv.006" title="Coordinating activity" uid="SECTION:activity"> 
     90<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     91<item id="tmpid.0001" label="CMIP6" status="" title="Coupled Model Intercomparison Project, Phase 6" url="http://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6"/> 
     92<item id="tmpid.0002" label="AerChemMIP" status="" title="Aerosols and Chemistry Model Intercomparison Project" url="https://wiki.met.no/aerocom/aerchemmip/start"/> 
     93<item id="tmpid.0003" label="C4MIP" status="" title="Coupled Climate Carbon Cycle Model Intercomparison Project" url="http://c4mip.lsce.ipsl.fr/"/> 
     94<item id="tmpid.0004" label="CFMIP" status="" title="Cloud Feedback Model Intercomparison Project" url="http://www.cfmip.net./"/> 
     95<item id="tmpid.0005" label="DAMIP" status="" title="Detection and Attribution Model Intercomparison Project" url="http://www.wcrp-climate.org/modelling-wgcm-mip-catalogue/modelling-wgcm-mips/475-modelling-wgcm-damip"/> 
     96<item id="tmpid.0006" label="DCPP" status="" title="Decadal Climate Prediction Project" url=""/> 
     97<item id="tmpid.0007" label="FAFMIP" status="" title="Flux-Anomaly-Forced Model Intercomparison Project" url="http://www.met.reading.ac.uk/~jonathan/FAFMIP/"/> 
     98<item id="tmpid.0008" label="GeoMIP" status="" title="Geoengineering Model Intercomparison Project" url=""/> 
     99<item id="tmpid.0009" label="GMMIP" status="" title="Global Monsoons Model Intercomparison Project" url=""/> 
     100<item id="tmpid.0010" label="HighResMIP" status="" title="High Resolution Model Intercomparison Project" url="https://dev.knmi.nl/projects/highresmip/wiki"/> 
     101<item id="tmpid.0011" label="ISMIP6" status="" title="Ice Sheet Model Intercomparison Project for CMIP6" url=""/> 
     102<item id="tmpid.0012" label="LS3MIP" status="" title="Land Surface, Snow and Soil Moisture MIP" url=""/> 
     103<item id="tmpid.0013" label="LUMIP" status="" title="Land-Use Model Intercomparison Project" url=""/> 
     104<item id="tmpid.0014" label="OMIP" status="" title="Ocean Model Intercomparison Project" url=""/> 
     105<item id="tmpid.0015" label="PDRMIP" status="withdrawn" title="Precipitation Driver and Response Model Intercomparison Project" url=""/> 
     106<item id="tmpid.0016" label="PMIP" status="" title="Palaeoclimate Modelling Intercomparison Project" url=""/> 
     107<item id="tmpid.0017" label="RFMIP" status="" title="Radiative Forcing Model Intercomparison Project" url=""/> 
     108<item id="tmpid.0018" label="ScenarioMIP" status="" title="Scenario Model Intercomparison Project" url=""/> 
     109<item id="tmpid.0019" label="SolarMIP" status="merged with DAMIP" title="Solar Model Intercomparison Project" url=""/> 
     110<item id="tmpid.0020" label="VolMIP" status="" title="Volcanic Forcings Model Intercomparison Project" url=""/> 
     111<item id="tmpid.0021" label="CORDEX" status="Diagnostic" title="" url=""/> 
     112<item id="tmpid.0022" label="DynVar" status="Diagnostic" title="" url=""/> 
     113<item id="tmpid.0023" label="SIMIP" status="Diagnostic" title="" url=""/> 
     114<item id="tmpid.0024" label="VIACS AB" status="Diagnostic" title="" url=""/> 
    109115</activity> 
    110 <product class="vocab" id="cmip.drv.007" title="Data product"> 
    111 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    112 <item id="001.007.001" label="example-01" title="dummy title string" uuid="215ef9ac-3a81-11e5-882e-ac72891c3257"/> 
     116<product class="vocab" id="cmip.drv.007" title="Data product" uid="SECTION:product"> 
     117<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     118<item id="001.007.001" label="example-01" title="dummy title string" uid="c2c1d262-6838-11e5-b0d3-5404a60d96b5"/> 
    113119</product> 
    114 <experiment class="vocab" id="cmip.drv.008" title="Numerical Experiment"> 
    115 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    116 <item altLabel="dummyAt" description="dummyAt" id="001.008.001" label="example-01" sponsor="dummyAt" title="dummy title string" url="dummyAt" uuid="215efe70-3a81-11e5-882e-ac72891c3257"/> 
     120<experiment class="vocab" id="cmip.drv.008" title="Numerical Experiment" uid="SECTION:experiment"> 
     121<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     122<item altLabel="dummyAt" description="dummyAt" id="001.008.001" label="example-01" sponsor="dummyAt" title="dummy title string" uid="c2c1d744-6838-11e5-b0d3-5404a60d96b5" url="dummyAt"/> 
    117123</experiment> 
    118 <frequency class="vocab" id="cmip.drv.009" title="Temporal frequency of data values"> 
    119 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    120 <item id="tmpid.0001" iso="P1Y" label="yr" title="Annual" uuid="67529d2e-3a81-11e5-9ed5-ac72891c3257"/> 
    121 <item id="tmpid.0002" iso="P1M" label="monClim" title="Monthly climatology" uuid="6752a0bc-3a81-11e5-9ed5-ac72891c3257"/> 
    122 <item id="tmpid.0003" iso="P1M" label="mon" title="Monthly" uuid="6752a40e-3a81-11e5-9ed5-ac72891c3257"/> 
    123 <item id="tmpid.0004" iso="P1D" label="day" title="Daily" uuid="6752a760-3a81-11e5-9ed5-ac72891c3257"/> 
    124 <item id="tmpid.0005" iso="PT6H" label="6hr" title="6-hourly" uuid="6752aa9e-3a81-11e5-9ed5-ac72891c3257"/> 
    125 <item id="tmpid.0006" iso="PT3H" label="3hr" title="3-hourly" uuid="6752ae90-3a81-11e5-9ed5-ac72891c3257"/> 
    126 <item id="tmpid.0007" iso="PT1H" label="hr" title="Hourly" uuid="6752b890-3a81-11e5-9ed5-ac72891c3257"/> 
    127 <item id="tmpid.0008" iso="" label="subhr" title="Sub-hourly" uuid="6752bd9a-3a81-11e5-9ed5-ac72891c3257"/> 
     124<frequency class="vocab" id="cmip.drv.009" title="Temporal frequency of data values" uid="SECTION:frequency"> 
     125<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     126<item id="tmpid.0001" iso="P1Y" label="yr" title="Annual"/> 
     127<item id="tmpid.0002" iso="P1M" label="monClim" title="Monthly climatology"/> 
     128<item id="tmpid.0003" iso="P1M" label="mon" title="Monthly"/> 
     129<item id="tmpid.0004" iso="P1D" label="day" title="Daily"/> 
     130<item id="tmpid.0005" iso="PT6H" label="6hr" title="6-hourly"/> 
     131<item id="tmpid.0006" iso="PT3H" label="3hr" title="3-hourly"/> 
     132<item id="tmpid.0007" iso="PT1H" label="hr" title="Hourly"/> 
     133<item id="tmpid.0008" iso="" label="subhr" title="Sub-hourly"/> 
    128134</frequency> 
    129 <realm class="vocab" id="cmip.drv.010" title="Modeling realm"> 
    130 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    131 <item id="tmpid.0001" label="atmos" title="Atmospheric" uuid="67509b28-3a81-11e5-9ed5-ac72891c3257"/> 
    132 <item id="tmpid.0002" label="ocean" title="Oceanic" uuid="6750da48-3a81-11e5-9ed5-ac72891c3257"/> 
    133 <item id="tmpid.0003" label="land" title="Land" uuid="67512232-3a81-11e5-9ed5-ac72891c3257"/> 
    134 <item id="tmpid.0004" label="landIce" title="Terrestrial cryosphere" uuid="6751662a-3a81-11e5-9ed5-ac72891c3257"/> 
    135 <item id="tmpid.0005" label="seaIce" title="Marine cryosphere" uuid="67516f44-3a81-11e5-9ed5-ac72891c3257"/> 
    136 <item id="tmpid.0006" label="aerosol" title="Aerosols" uuid="675172e6-3a81-11e5-9ed5-ac72891c3257"/> 
    137 <item id="tmpid.0007" label="atmosChem" title="Atmospheric chemistry" uuid="6751762e-3a81-11e5-9ed5-ac72891c3257"/> 
    138 <item id="tmpid.0008" label="ocnBgchem" title="Ocean bio-geochemistry" uuid="6751796c-3a81-11e5-9ed5-ac72891c3257"/> 
     135<realm class="vocab" id="cmip.drv.010" title="Modeling realm" uid="SECTION:realm"> 
     136<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     137<item id="tmpid.0001" label="atmos" title="Atmospheric"/> 
     138<item id="tmpid.0002" label="ocean" title="Oceanic"/> 
     139<item id="tmpid.0003" label="land" title="Land"/> 
     140<item id="tmpid.0004" label="landIce" title="Terrestrial cryosphere"/> 
     141<item id="tmpid.0005" label="seaIce" title="Marine cryosphere"/> 
     142<item id="tmpid.0006" label="aerosol" title="Aerosols"/> 
     143<item id="tmpid.0007" label="atmosChem" title="Atmospheric chemistry"/> 
     144<item id="tmpid.0008" label="ocnBgchem" title="Ocean bio-geochemistry"/> 
    139145</realm> 
    140 <grid class="vocab" id="cmip.drv.011" title="Native grid"> 
    141 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    142 <item id="tmpid.0001" label="atmosphere" title="Atmosphere grid" uuid="6752c768-3a81-11e5-9ed5-ac72891c3257"/> 
    143 <item id="tmpid.0002" label="ocean" title="Ocean grid" uuid="6752ca7e-3a81-11e5-9ed5-ac72891c3257"/> 
    144 <item id="tmpid.0003" label="ice" title="Grid used for ice sheets" uuid="6752cd94-3a81-11e5-9ed5-ac72891c3257"/> 
    145 <item id="tmpid.0004" label="land" title="Grid used for land surface modelling" uuid="6752d0a0-3a81-11e5-9ed5-ac72891c3257"/> 
     146<grid class="vocab" id="cmip.drv.011" title="Native grid" uid="SECTION:grid"> 
     147<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     148<item id="tmpid.0001" label="atmosphere" title="Atmosphere grid"/> 
     149<item id="tmpid.0002" label="ocean" title="Ocean grid"/> 
     150<item id="tmpid.0003" label="ice" title="Grid used for ice sheets"/> 
     151<item id="tmpid.0004" label="land" title="Grid used for land surface modelling"/> 
    146152</grid> 
    147 <dimensions class="vocab" id="cmip.drv.012" title="MIP table variable dimensions"> 
    148 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    149 <item altLabel="dummyAt" id="001.012.001" label="example01" size="25" sn="dummyAt" title="dummy title string" uuid="215f0bea-3a81-11e5-882e-ac72891c3257"/> 
     153<dimensions class="vocab" id="cmip.drv.012" title="MIP table variable dimensions" uid="SECTION:dimensions"> 
     154<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     155<item altLabel="dummyAt" id="001.012.001" label="example01" size="25" sn="dummyAt" title="dummy title string" uid="c2c1e54a-6838-11e5-b0d3-5404a60d96b5"/> 
    150156</dimensions> 
    151 <forcings class="vocab" id="cmip.drv.013" title="Forcing"> 
    152 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    153 <item id="001.013.001" label="example-01" title="dummy title string" uuid="215f0ed8-3a81-11e5-882e-ac72891c3257"/> 
     157<forcings class="vocab" id="cmip.drv.013" title="Forcing" uid="SECTION:forcings"> 
     158<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     159<item id="001.013.001" label="example-01" title="dummy title string" uid="c2c1e95a-6838-11e5-b0d3-5404a60d96b5"/> 
    154160</forcings> 
    155 <table class="vocab" id="cmip.drv.014" title="Data specification table"> 
    156 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    157 <item comment="" description="Definitions of all the coordinate variables used in the CMIP6 data request" frequency="fx" id="tmpid.0001" label="grids" title="Fixed coordinate variables" uuid="67540d4e-3a81-11e5-9ed5-ac72891c3257"/> 
    158 <item comment="" description="Variables with no time dependency" frequency="fx" id="tmpid.0002" label="fx" title="Fixed variables" uuid="67541208-3a81-11e5-9ed5-ac72891c3257"/> 
    159 <item comment="&quot;ocean&quot; as in &quot;ocean grid&quot;" description="Annual mean variables on the ocean grid." frequency="yr" id="tmpid.0003" label="Oyr" title="Annual ocean variables" uuid="67541654-3a81-11e5-9ed5-ac72891c3257"/> 
    160 <item comment="For CMIP5 there was &quot;Oclim&quot; for ocean climatologies, and atmospheric climatologies were in Amon. Moving Atmospheric climatologies to Clim gives us a strict hierarchy with a single &quot;frequency&quot; in each table." description="Monthly Mean Climatology" frequency="monClim" id="tmpid.0004" label="Clim" title="Monthly climatologies" uuid="67541b2c-3a81-11e5-9ed5-ac72891c3257"/> 
    161 <item comment="" description="Monthly Mean Ocean Fields, Including Biogechemical Field" frequency="mon" id="tmpid.0005" label="Omon" title="Monthly ocean variables" uuid="67541f6e-3a81-11e5-9ed5-ac72891c3257"/> 
    162 <item comment="See comment on ts: http://dreq01.vanillaforums.com/discussion/29/surface-temperature?new=1" description="Monthly Mean Atmospheric Fields and Some Surface Field" frequency="mon" id="tmpid.0006" label="Amon" title="Montly atmospheric variables (excluding composition and radiation)" uuid="675423c4-3a81-11e5-9ed5-ac72891c3257"/> 
    163 <item comment="" description="Monthly Mean Land Cryosphere Fields" frequency="mon" id="tmpid.0007" label="LImon" title="Monthly land ice" uuid="6754282e-3a81-11e5-9ed5-ac72891c3257"/> 
    164 <item comment="&quot;land&quot; as in &quot;land grid&quot; -- not including variables on atmospheric grid requested for analysis of land processes" description="Monthly Mean Land Fields, Including Physical, Vegetation, Soil, and Biogeochemical Variables" frequency="mon" id="tmpid.0008" label="Lmon" title="Monthly land variables" uuid="67542c8e-3a81-11e5-9ed5-ac72891c3257"/> 
    165 <item comment="" description="Monthly Mean Ocean Cryosphere Fields" frequency="mon" id="tmpid.0009" label="OImon" title="Sea-ice" uuid="675430f8-3a81-11e5-9ed5-ac72891c3257"/> 
    166 <item comment="Used in CMIP5; not requested by CfMIP in CMIP6, but, provisionally, by HighResMIP" description="Monthly Offline Cloud Diagnostic Fields" frequency="mon" id="tmpid.0010" label="cfOff" title="Offline diagnostics for cloud forcing analysis" uuid="67543526-3a81-11e5-9ed5-ac72891c3257"/> 
    167 <item comment="Contains radiative fields from cfMon; some duplication with Amon " description="" frequency="mon" id="tmpid.0011" label="Rmon" title="Monthly atmospheric radiation data" uuid="67543986-3a81-11e5-9ed5-ac72891c3257"/> 
    168 <item comment="" description="Monthly atmospheric composition, including aerosols and properties of aerosols (but see Rmon for radiation quantities)" frequency="mon" id="tmpid.0012" label="Cmon" title="Monthly Atmospheric Composition Data" uuid="67543df0-3a81-11e5-9ed5-ac72891c3257"/> 
    169 <item comment="" description="Daily Mean Atmosphere, Ocean and Surface Fields" frequency="day" id="tmpid.0013" label="Oday" title="Daily  ocean data" uuid="6754423c-3a81-11e5-9ed5-ac72891c3257"/> 
    170 <item comment="" description="" frequency="" id="tmpid.0014" label="Aday" title="Daily atmospheric data, excluding composition and cloud forcing" uuid="6754466a-3a81-11e5-9ed5-ac72891c3257"/> 
    171 <item comment="Formerly &quot;aero&quot;" description="" frequency="day" id="tmpid.0015" label="Cday" title="Daily atmospheric composition data" uuid="67544ae8-3a81-11e5-9ed5-ac72891c3257"/> 
    172 <item comment="" description="" frequency="" id="tmpid.0016" label="cfDay" title="Daily data associated with cloud forcing" uuid="67545196-3a81-11e5-9ed5-ac72891c3257"/> 
    173 <item comment="" description="Fields (Sampled Every 6 Hours) for Driving Regional Models " frequency="6hr" id="tmpid.0017" label="6hrLev" title="6-hourly atmospheric data on model levels" uuid="675455f6-3a81-11e5-9ed5-ac72891c3257"/> 
    174 <item comment="Only 3 levels in CMIP5, more levels requested in CMIP6 by HighResMIP (low priority)" description="Fields (Sampled Every 6 Hours) for Storm-Track Analysis and other Advanced Diagnostic Applications" frequency="6hr" id="tmpid.0018" label="6hrPlev" title="6-hourly atmospheric data on pressure levels" uuid="67545a7e-3a81-11e5-9ed5-ac72891c3257"/> 
    175 <item comment="CMIP5 had two MIP tables at 3hr frequency, &quot;3hr&quot; and &quot;cf3hr&quot;. In some cases variables were requested as instantaneous in one and accumulated in the other. Making two tables with clear definitions should make it easier to see what is going on." description="" frequency="3hr" id="tmpid.0019" label="3hrPoint" title="3-hourly data, instantaenous fields" uuid="67545f74-3a81-11e5-9ed5-ac72891c3257"/> 
    176 <item comment="" description="Atmospheric and Surface Fields Sampled Every 3 Hours" frequency="3hr" id="tmpid.0020" label="3hrAcc" title="3-hourly data, accumulated fields" uuid="6754642e-3a81-11e5-9ed5-ac72891c3257"/> 
    177 <item comment="New -- part of HighResMIP request." description="" frequency="1hr" id="tmpid.0021" label="1hr" title="" uuid="6754685c-3a81-11e5-9ed5-ac72891c3257"/> 
    178 <item comment="Includes cfsites and data for highresmip" description="" frequency="subhr" id="tmpid.0022" label="subhr" title="" uuid="67546c58-3a81-11e5-9ed5-ac72891c3257"/> 
     161<table class="vocab" id="cmip.drv.014" title="Data specification table" uid="SECTION:table"> 
     162<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     163<item comment="" description="Definitions of all the coordinate variables used in the CMIP6 data request" frequency="fx" id="tmpid.0001" label="grids" title="Fixed coordinate variables"/> 
     164<item comment="" description="Variables with no time dependency" frequency="fx" id="tmpid.0002" label="fx" title="Fixed variables"/> 
     165<item comment="&quot;ocean&quot; as in &quot;ocean grid&quot;" description="Annual mean variables on the ocean grid." frequency="yr" id="tmpid.0003" label="Oyr" title="Annual ocean variables"/> 
     166<item comment="For CMIP5 there was &quot;Oclim&quot; for ocean climatologies, and atmospheric climatologies were in Amon. Moving Atmospheric climatologies to Clim gives us a strict hierarchy with a single &quot;frequency&quot; in each table." description="Monthly Mean Climatology" frequency="monClim" id="tmpid.0004" label="Clim" title="Monthly climatologies"/> 
     167<item comment="" description="Monthly Mean Ocean Fields, Including Biogechemical Field" frequency="mon" id="tmpid.0005" label="Omon" title="Monthly ocean variables"/> 
     168<item comment="See comment on ts: http://dreq01.vanillaforums.com/discussion/29/surface-temperature?new=1" description="Monthly Mean Atmospheric Fields and Some Surface Field" frequency="mon" id="tmpid.0006" label="Amon" title="Montly atmospheric variables (excluding composition and radiation)"/> 
     169<item comment="" description="Monthly Mean Land Cryosphere Fields" frequency="mon" id="tmpid.0007" label="LImon" title="Monthly land ice"/> 
     170<item comment="&quot;land&quot; as in &quot;land grid&quot; -- not including variables on atmospheric grid requested for analysis of land processes" description="Monthly Mean Land Fields, Including Physical, Vegetation, Soil, and Biogeochemical Variables" frequency="mon" id="tmpid.0008" label="Lmon" title="Monthly land variables"/> 
     171<item comment="" description="Monthly Mean Ocean Cryosphere Fields" frequency="mon" id="tmpid.0009" label="OImon" title="Sea-ice"/> 
     172<item comment="Used in CMIP5; not requested by CfMIP in CMIP6, but, provisionally, by HighResMIP" description="Monthly Offline Cloud Diagnostic Fields" frequency="mon" id="tmpid.0010" label="cfOff" title="Offline diagnostics for cloud forcing analysis"/> 
     173<item comment="Contains radiative fields from cfMon; some duplication with Amon " description="" frequency="mon" id="tmpid.0011" label="Rmon" title="Monthly atmospheric radiation data"/> 
     174<item comment="" description="Monthly atmospheric composition, including aerosols and properties of aerosols (but see Rmon for radiation quantities)" frequency="mon" id="tmpid.0012" label="Cmon" title="Monthly Atmospheric Composition Data"/> 
     175<item comment="" description="Daily Mean Atmosphere, Ocean and Surface Fields" frequency="day" id="tmpid.0013" label="Oday" title="Daily  ocean data"/> 
     176<item comment="" description="" frequency="" id="tmpid.0014" label="Aday" title="Daily atmospheric data, excluding composition and cloud forcing"/> 
     177<item comment="Formerly &quot;aero&quot;" description="" frequency="day" id="tmpid.0015" label="Cday" title="Daily atmospheric composition data"/> 
     178<item comment="" description="" frequency="" id="tmpid.0016" label="cfDay" title="Daily data associated with cloud forcing"/> 
     179<item comment="" description="Fields (Sampled Every 6 Hours) for Driving Regional Models " frequency="6hr" id="tmpid.0017" label="6hrLev" title="6-hourly atmospheric data on model levels"/> 
     180<item comment="Only 3 levels in CMIP5, more levels requested in CMIP6 by HighResMIP (low priority)" description="Fields (Sampled Every 6 Hours) for Storm-Track Analysis and other Advanced Diagnostic Applications" frequency="6hr" id="tmpid.0018" label="6hrPlev" title="6-hourly atmospheric data on pressure levels"/> 
     181<item comment="CMIP5 had two MIP tables at 3hr frequency, &quot;3hr&quot; and &quot;cf3hr&quot;. In some cases variables were requested as instantaneous in one and accumulated in the other. Making two tables with clear definitions should make it easier to see what is going on." description="" frequency="3hr" id="tmpid.0019" label="3hrPoint" title="3-hourly data, instantaenous fields"/> 
     182<item comment="" description="Atmospheric and Surface Fields Sampled Every 3 Hours" frequency="3hr" id="tmpid.0020" label="3hrAcc" title="3-hourly data, accumulated fields"/> 
     183<item comment="New -- part of HighResMIP request." description="" frequency="1hr" id="tmpid.0021" label="1hr" title=""/> 
     184<item comment="Includes cfsites and data for highresmip" description="" frequency="subhr" id="tmpid.0022" label="subhr" title=""/> 
    179185</table> 
    180 <cref class="vocab" id="cmip.drv.015" title="Coordinate Reference"> 
    181 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    182 <item id="001.015.001" label="example-01" title="dummy title string" uuid="215f170c-3a81-11e5-882e-ac72891c3257"/> 
     186<cref class="vocab" id="cmip.drv.015" title="Coordinate Reference" uid="SECTION:cref"> 
     187<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     188<item id="001.015.001" label="example-01" title="dummy title string" uid="c2c1f0c6-6838-11e5-b0d3-5404a60d96b5"/> 
    183189</cref> 
    184 <areaType class="vocab" id="cmip.drv.016" title="CMIP Area Type"> 
    185 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    186 <item id="001.016.001" inCF="dummyAt" label="example-01" title="dummy title string" uuid="215f1a54-3a81-11e5-882e-ac72891c3257"/> 
     190<areaType class="vocab" id="cmip.drv.016" title="CMIP Area Type" uid="SECTION:areaType"> 
     191<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     192<item id="001.016.001" inCF="dummyAt" label="example-01" title="dummy title string" uid="c2c1f422-6838-11e5-b0d3-5404a60d96b5"/> 
    187193</areaType> 
    188 <timeSlice class="vocab" id="cmip.drv.017" title="Time slices used in data request"> 
    189 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    190 <item id="001.017.001" label="example-01" specification="dummyAt" title="dummy title string" type="dummyAt" uuid="215f1de2-3a81-11e5-882e-ac72891c3257"/> 
     194<timeSlice class="vocab" id="cmip.drv.017" title="Time slices used in data request" uid="SECTION:timeSlice"> 
     195<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     196<item id="001.017.001" label="example-01" specification="dummyAt" title="dummy title string" type="dummyAt" uid="c2c1f7d8-6838-11e5-b0d3-5404a60d96b5"/> 
    191197</timeSlice> 
    192 <modelFamily class="vocab" id="cmip.drv.018" title="Family of model"> 
    193 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    194 <item id="001.018.001" label="example-01" title="dummy title string" uuid="215f20b2-3a81-11e5-882e-ac72891c3257"/> 
     198<modelFamily class="vocab" id="cmip.drv.018" title="Family of model" uid="SECTION:modelFamily"> 
     199<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     200<item id="001.018.001" label="example-01" title="dummy title string" uid="c2c1fac6-6838-11e5-b0d3-5404a60d96b5"/> 
    195201</modelFamily> 
    196 <priority class="vocab" id="cmip.drv.019" title="Variable priority"> 
    197 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    198 <item description="Modelling centres must commit to supplying all priority 1 variables associated with at least one science question for Tier 1 experiments of any MIP which they participate in;" id="tmpid.0001" label="1" title="High" uuid="6751ecb2-3a81-11e5-9ed5-ac72891c3257"/> 
    199 <item description="Expected to be used in multi-model diagnostics; models not supplying these variables may be omitted from some parts of the inter-comparison;" id="tmpid.0002" label="3" title="Medium" uuid="6751f05e-3a81-11e5-9ed5-ac72891c3257"/> 
    200 <item description="Experimental -- used for exploring new capabilities and/or unlikely to be used in multi-model diagnostic." id="tmpid.0003" label="3" title="Low" uuid="6751f3a6-3a81-11e5-9ed5-ac72891c3257"/> 
     202<priority class="vocab" id="cmip.drv.019" title="Variable priority" uid="SECTION:priority"> 
     203<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     204<item description="Modelling centres must commit to supplying all priority 1 variables associated with at least one science question for Tier 1 experiments of any MIP which they participate in;" id="tmpid.0001" label="1.0" title="High"/> 
     205<item description="Expected to be used in multi-model diagnostics; models not supplying these variables may be omitted from some parts of the inter-comparison;" id="tmpid.0002" label="3.0" title="Medium"/> 
     206<item description="Experimental -- used for exploring new capabilities and/or unlikely to be used in multi-model diagnostic." id="tmpid.0003" label="3.0" title="Low"/> 
    201207</priority> 
    202 <qcLevel class="vocab" id="cmip.drv.020" title="Quality control level"> 
    203 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    204 <item id="001.020.001" label="1" title="dummy title string" uuid="215f26a2-3a81-11e5-882e-ac72891c3257"/> 
     208<qcLevel class="vocab" id="cmip.drv.020" title="Quality control level" uid="SECTION:qcLevel"> 
     209<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     210<item id="001.020.001" label="1" title="dummy title string" uid="c2c200fc-6838-11e5-b0d3-5404a60d96b5"/> 
    205211</qcLevel> 
    206 <complianceCode class="vocab" id="cmip.drv.021" title="Data specification compliance codes"> 
    207 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    208 <item id="001.021.001" label="example-01" title="dummy title string" uuid="215f295e-3a81-11e5-882e-ac72891c3257"/> 
     212<complianceCode class="vocab" id="cmip.drv.021" title="Data specification compliance codes" uid="SECTION:complianceCode"> 
     213<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     214<item id="001.021.001" label="example-01" title="dummy title string" uid="c2c203e0-6838-11e5-b0d3-5404a60d96b5"/> 
    209215</complianceCode> 
    210 <glossary class="vocab" id="cmip.drv.022" title="Glossary"> 
    211 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    212 <item description="" fullName="Coupled Model Intercomparison Project" id="tmpid.0001" label="cmip" title="CMIP" url="" uuid="675186f0-3a81-11e5-9ed5-ac72891c3257"/> 
    213 <item description="World Climate Research Programme (WCRP) Working Group on Coupled Modeling" fullName="Working Group on Coupled Models" id="tmpid.0002" label="wgcm" title="WGCM" url="http://www.wcrp-climate.org/wgcm/" uuid="67518b5a-3a81-11e5-9ed5-ac72891c3257"/> 
    214 <item description="" fullName="" id="tmpid.0003" label="wcrp" title="WCRP" url="" uuid="67518fce-3a81-11e5-9ed5-ac72891c3257"/> 
    215 <item description="Full specifications of vocabularies used for formatting, archiving and dsitribution of CMIP data" fullName="Data Reference Vocabularies" id="tmpid.0004" label="drvocabs" title="DRVoc" url="https://drive.google.com/drive/folders/0B6AWgiTrQ0xFQ0t2RjYtWW1jaFk" uuid="675193fc-3a81-11e5-9ed5-ac72891c3257"/> 
     216<glossary class="vocab" id="cmip.drv.022" title="Glossary" uid="SECTION:glossary"> 
     217<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     218<item description="" fullName="Coupled Model Intercomparison Project" id="tmpid.0001" label="cmip" title="CMIP" url=""/> 
     219<item description="World Climate Research Programme (WCRP) Working Group on Coupled Modeling" fullName="Working Group on Coupled Models" id="tmpid.0002" label="wgcm" title="WGCM" url="http://www.wcrp-climate.org/wgcm/"/> 
     220<item description="" fullName="" id="tmpid.0003" label="wcrp" title="WCRP" url=""/> 
     221<item description="Full specifications of vocabularies used for formatting, archiving and dsitribution of CMIP data" fullName="Data Reference Vocabularies" id="tmpid.0004" label="drvocabs" title="DRVoc" url="https://drive.google.com/drive/folders/0B6AWgiTrQ0xFQ0t2RjYtWW1jaFk"/> 
    216222</glossary> 
    217 <modelCompType class="vocab" id="cmip.drv.023" title="Model Component Types/Categories [redundant with *Native Grid*]"> 
    218 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    219 <item id="001.023.001" label="example-01" title="dummy title string" uuid="215f3002-3a81-11e5-882e-ac72891c3257"/> 
     223<modelCompType class="vocab" id="cmip.drv.023" title="Model Component Types/Categories [redundant with *Native Grid*]" uid="SECTION:modelCompType"> 
     224<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     225<item id="001.023.001" label="example-01" title="dummy title string" uid="c2c20ade-6838-11e5-b0d3-5404a60d96b5"/> 
    220226</modelCompType> 
    221 <modelType class="vocab" id="cmip.drv.024" title="Class of model"> 
    222 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    223 <item id="tmpid.0001" label="AGCM" title="Atmosphere only GCM" uuid="6751d09c-3a81-11e5-9ed5-ac72891c3257"/> 
    224 <item id="tmpid.0002" label="AOGCM" title="Coupled atmosphere-ocean model" uuid="6751d3bc-3a81-11e5-9ed5-ac72891c3257"/> 
    225 <item id="tmpid.0003" label="ESM" title="Earth System Model" uuid="6751d718-3a81-11e5-9ed5-ac72891c3257"/> 
    226 <item id="tmpid.0004" label="RCM" title="Regional Climate Model" uuid="6751da24-3a81-11e5-9ed5-ac72891c3257"/> 
    227 <item id="tmpid.0005" label="OGCM" title="Ocean General Circulation Model" uuid="6751dd26-3a81-11e5-9ed5-ac72891c3257"/> 
    228 <item id="tmpid.0006" label="ICESH" title="Ice sheet model" uuid="6751e03c-3a81-11e5-9ed5-ac72891c3257"/> 
    229 <item id="tmpid.0007" label="LU" title="Land use model" uuid="6751e32a-3a81-11e5-9ed5-ac72891c3257"/> 
     227<modelType class="vocab" id="cmip.drv.024" title="Class of model" uid="SECTION:modelType"> 
     228<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     229<item id="tmpid.0001" label="AGCM" title="Atmosphere only GCM"/> 
     230<item id="tmpid.0002" label="AOGCM" title="Coupled atmosphere-ocean model"/> 
     231<item id="tmpid.0003" label="ESM" title="Earth System Model"/> 
     232<item id="tmpid.0004" label="RCM" title="Regional Climate Model"/> 
     233<item id="tmpid.0005" label="OGCM" title="Ocean General Circulation Model"/> 
     234<item id="tmpid.0006" label="ICESH" title="Ice sheet model"/> 
     235<item id="tmpid.0007" label="LU" title="Land use model"/> 
    230236</modelType> 
    231 <index class="vocab" id="cmip.drv.025" title="Index of vocabularies"> 
    232 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    233 <item description="This table defines the quantities used to specify CMOR dimensions. Further information is in the CMOR documentation." id="tmpid.0001" label="cmorDimAttr" title="Attributes of CMOR dimensions" uuid="67504f6a-3a81-11e5-9ed5-ac72891c3257"/> 
     237<index class="vocab" id="cmip.drv.025" title="Index of vocabularies" uid="SECTION:index"> 
     238<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     239<item description="This table defines the quantities used to specify CMOR dimensions. Further information is in the CMOR documentation." id="tmpid.0001" label="cmorDimAttr" title="Attributes of CMOR dimensions"/> 
    234240</index> 
    235 <cmorDimAttr class="vocab" id="cmip.drv.026" title="CMOR Dimension Attributes"> 
    236 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    237 <item CMORattr="" description="A list of CMOR tables in which this dimension is used." id="tmpid.0001" label="tables" title="Tables using this dimension" uuid="6752e810-3a81-11e5-9ed5-ac72891c3257"/> 
    238 <item CMORattr="" description="Name used by CMOR -- unique within one set of tables" id="tmpid.0002" label="CmorName" title="CMOR name" uuid="6752ec0c-3a81-11e5-9ed5-ac72891c3257"/> 
    239 <item CMORattr="" description="Name used for variable and dimension in netcdf files" id="tmpid.0003" label="name" title="Name in file" uuid="6752efc2-3a81-11e5-9ed5-ac72891c3257"/> 
    240 <item CMORattr="" description="Value copied into NetCDF attribute 'long_name' of dimension variable" id="tmpid.0004" label="longname" title="Long name" uuid="6752f382-3a81-11e5-9ed5-ac72891c3257"/> 
    241 <item CMORattr="" description="For spatial or temporal dimensions -- should take the value X, Y, Z or T. Otherwise blank. Value copied into NetCDF attribute of dimension variable" id="tmpid.0005" label="axis" title="NetCDF axis attribute" uuid="6752f742-3a81-11e5-9ed5-ac72891c3257"/> 
    242 <item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0006" label="units" title="Units" uuid="6752fb34-3a81-11e5-9ed5-ac72891c3257"/> 
    243 <item CMORattr="" description="Set &quot;ok&quot; if the axis is an index (no netcdf variable will be created)." id="tmpid.0007" label="index" title="Is this an index dimension?" uuid="6752feea-3a81-11e5-9ed5-ac72891c3257"/> 
    244 <item CMORattr="coords_attrib" description="Used as variable name for coordinate values when these cannot be held in the axis variable (e.g. when the coordinate values are words)." id="tmpid.0008" label="coords" title="NetCDF coords attribute" uuid="675302dc-3a81-11e5-9ed5-ac72891c3257"/> 
    245 <item CMORattr="must_have_bounds" description="'Yes' or 'No', to indicate whether a bounds variable is needed." id="tmpid.0009" label="bounds" title="Are bounds required?" uuid="67530674-3a81-11e5-9ed5-ac72891c3257"/> 
    246 <item CMORattr="stored_direction" description="Set to 'increasing' or 'decreasing'. " id="tmpid.0010" label="direction" title="Order of values in axis variable" uuid="67530a2a-3a81-11e5-9ed5-ac72891c3257"/> 
    247 <item CMORattr="" description="" id="tmpid.0011" label="validMin" title="" uuid="67530df4-3a81-11e5-9ed5-ac72891c3257"/> 
    248 <item CMORattr="" description="" id="tmpid.0012" label="validMax" title="" uuid="675311c8-3a81-11e5-9ed5-ac72891c3257"/> 
    249 <item CMORattr="" description="Type (e.g. 'double', 'character', 'integer')" id="tmpid.0013" label="type" title="Type of axis values" uuid="67531574-3a81-11e5-9ed5-ac72891c3257"/> 
    250 <item CMORattr="" description="This attribute is used for vertical coordinates, indicates whether the dimension increases upwards or downwards (valid values are 'up', 'down', or blank)" id="tmpid.0014" label="positive" title="NetCDF positive attribute" uuid="67531b82-3a81-11e5-9ed5-ac72891c3257"/> 
    251 <item CMORattr="" description="For array dimensions see 'requested'" id="tmpid.0015" label="value" title="Value of singleton dimension" uuid="67531f38-3a81-11e5-9ed5-ac72891c3257"/> 
    252 <item CMORattr="" description="For array dimensions see 'boundsreq'" id="tmpid.0016" label="bounds_values" title="Bounds of a singleton dimension" uuid="675322e4-3a81-11e5-9ed5-ac72891c3257"/> 
    253 <item CMORattr="" description="For singleton dimensions see 'value'" id="tmpid.0017" label="requested" title="Values of array dimensions" uuid="675326ea-3a81-11e5-9ed5-ac72891c3257"/> 
    254 <item CMORattr="" description="For singleton dimensions see 'bounds_value'" id="tmpid.0018" label="boundsreq" title="Bounds Requested" uuid="67532aaa-3a81-11e5-9ed5-ac72891c3257"/> 
    255 <item CMORattr="" description="Variance from requested values that is tolerated" id="tmpid.0019" label="tolerance" title="Tolerance on requested values" uuid="67532e6a-3a81-11e5-9ed5-ac72891c3257"/> 
    256 <item CMORattr="must_call_cmor_grid" description="" id="tmpid.0020" label="grid" title="Is this a grid" uuid="6753322a-3a81-11e5-9ed5-ac72891c3257"/> 
    257 <item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0021" label="formula" title="NetCDF formula_terms attribute" uuid="675335fe-3a81-11e5-9ed5-ac72891c3257"/> 
    258 <item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0022" label="z_factors" title="NetCDF z_factors attribute" uuid="675339b4-3a81-11e5-9ed5-ac72891c3257"/> 
    259 <item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0023" label="z_bounds_factors" title="NetCDF z_bounds_factors" uuid="67533d88-3a81-11e5-9ed5-ac72891c3257"/> 
     241<cmorDimAttr class="vocab" id="cmip.drv.026" title="CMOR Dimension Attributes" uid="SECTION:cmorDimAttr"> 
     242<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     243<item CMORattr="" description="A list of CMOR tables in which this dimension is used." id="tmpid.0001" label="tables" title="Tables using this dimension"/> 
     244<item CMORattr="" description="Name used by CMOR -- unique within one set of tables" id="tmpid.0002" label="CmorName" title="CMOR name"/> 
     245<item CMORattr="" description="Name used for variable and dimension in netcdf files" id="tmpid.0003" label="name" title="Name in file"/> 
     246<item CMORattr="" description="Value copied into NetCDF attribute 'long_name' of dimension variable" id="tmpid.0004" label="longname" title="Long name"/> 
     247<item CMORattr="" description="For spatial or temporal dimensions -- should take the value X, Y, Z or T. Otherwise blank. Value copied into NetCDF attribute of dimension variable" id="tmpid.0005" label="axis" title="NetCDF axis attribute"/> 
     248<item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0006" label="units" title="Units"/> 
     249<item CMORattr="" description="Set &quot;ok&quot; if the axis is an index (no netcdf variable will be created)." id="tmpid.0007" label="index" title="Is this an index dimension?"/> 
     250<item CMORattr="coords_attrib" description="Used as variable name for coordinate values when these cannot be held in the axis variable (e.g. when the coordinate values are words)." id="tmpid.0008" label="coords" title="NetCDF coords attribute"/> 
     251<item CMORattr="must_have_bounds" description="'Yes' or 'No', to indicate whether a bounds variable is needed." id="tmpid.0009" label="bounds" title="Are bounds required?"/> 
     252<item CMORattr="stored_direction" description="Set to 'increasing' or 'decreasing'. " id="tmpid.0010" label="direction" title="Order of values in axis variable"/> 
     253<item CMORattr="" description="" id="tmpid.0011" label="validMin" title=""/> 
     254<item CMORattr="" description="" id="tmpid.0012" label="validMax" title=""/> 
     255<item CMORattr="" description="Type (e.g. 'double', 'character', 'integer')" id="tmpid.0013" label="type" title="Type of axis values"/> 
     256<item CMORattr="" description="This attribute is used for vertical coordinates, indicates whether the dimension increases upwards or downwards (valid values are 'up', 'down', or blank)" id="tmpid.0014" label="positive" title="NetCDF positive attribute"/> 
     257<item CMORattr="" description="For array dimensions see 'requested'" id="tmpid.0015" label="value" title="Value of singleton dimension"/> 
     258<item CMORattr="" description="For array dimensions see 'boundsreq'" id="tmpid.0016" label="bounds_values" title="Bounds of a singleton dimension"/> 
     259<item CMORattr="" description="For singleton dimensions see 'value'" id="tmpid.0017" label="requested" title="Values of array dimensions"/> 
     260<item CMORattr="" description="For singleton dimensions see 'bounds_value'" id="tmpid.0018" label="boundsreq" title="Bounds Requested"/> 
     261<item CMORattr="" description="Variance from requested values that is tolerated" id="tmpid.0019" label="tolerance" title="Tolerance on requested values"/> 
     262<item CMORattr="must_call_cmor_grid" description="" id="tmpid.0020" label="grid" title="Is this a grid"/> 
     263<item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0021" label="formula" title="NetCDF formula_terms attribute"/> 
     264<item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0022" label="z_factors" title="NetCDF z_factors attribute"/> 
     265<item CMORattr="" description="Value copied into NetCDF attribute of dimension variable" id="tmpid.0023" label="z_bounds_factors" title="NetCDF z_bounds_factors"/> 
    260266</cmorDimAttr> 
    261 <processingOptions class="vocab" id="cmip.drv.027" title="Processing steps required"> 
    262 <!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    263 <item description="" id="tmpid.0001" label="TM" title="time mean" uuid="6751a22a-3a81-11e5-9ed5-ac72891c3257"/> 
    264 <item description="The weighted time mean is important when a time varying mask is used (e.g. sea ice)" id="tmpid.0002" label="WM" title="weighted time mean" uuid="6751a5c2-3a81-11e5-9ed5-ac72891c3257"/> 
    265 <item description="" id="tmpid.0003" label="VCI" title="vertical coordinate interpolation" uuid="6751a91e-3a81-11e5-9ed5-ac72891c3257"/> 
    266 <item description="" id="tmpid.0004" label="MSK" title="masking" uuid="6751aca2-3a81-11e5-9ed5-ac72891c3257"/> 
    267 <item description="" id="tmpid.0005" label="NS" title="near surface (atmosphere)" uuid="6751afea-3a81-11e5-9ed5-ac72891c3257"/> 
    268 <item description="" id="tmpid.0006" label="SPI" title="spatial interpolation" uuid="6751b35a-3a81-11e5-9ed5-ac72891c3257"/> 
    269 <item description="" id="tmpid.0007" label="SM" title="spectral mean" uuid="6751bbb6-3a81-11e5-9ed5-ac72891c3257"/> 
    270 <item description="" id="tmpid.0008" label="CL" title="climatology " uuid="6751bf62-3a81-11e5-9ed5-ac72891c3257"/> 
    271 <item description="" id="tmpid.0009" label="STAT" title="temporal statistics" uuid="6751c2c8-3a81-11e5-9ed5-ac72891c3257"/> 
    272 <item description="specialised definition of variable which is more tightly constrained than the CF standard name; variables marked with this will need special attention." id="tmpid.0010" label="SD" title="specialised definition" uuid="6751c62e-3a81-11e5-9ed5-ac72891c3257"/> 
     267<processingOptions class="vocab" id="cmip.drv.027" title="Processing steps required" uid="SECTION:processingOptions"> 
     268<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     269<item description="" id="tmpid.0001" label="TM" title="time mean"/> 
     270<item description="The weighted time mean is important when a time varying mask is used (e.g. sea ice)" id="tmpid.0002" label="WM" title="weighted time mean"/> 
     271<item description="" id="tmpid.0003" label="VCI" title="vertical coordinate interpolation"/> 
     272<item description="" id="tmpid.0004" label="MSK" title="masking"/> 
     273<item description="" id="tmpid.0005" label="NS" title="near surface (atmosphere)"/> 
     274<item description="" id="tmpid.0006" label="SPI" title="spatial interpolation"/> 
     275<item description="" id="tmpid.0007" label="SM" title="spectral mean"/> 
     276<item description="" id="tmpid.0008" label="CL" title="climatology "/> 
     277<item description="" id="tmpid.0009" label="STAT" title="temporal statistics"/> 
     278<item description="specialised definition of variable which is more tightly constrained than the CF standard name; variables marked with this will need special attention." id="tmpid.0010" label="SD" title="specialised definition"/> 
    273279</processingOptions> 
     280<coordinateReference class="vocab" id="cmip.drv.028" title="Processing steps required" uid="SECTION:coordinateReference"> 
     281<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
     282<item id="tmpid.0001" label="Sphere" ogc_wkt="GEOGCS[&quot;WGS 84&quot;,DATUM[&quot;WGS_1984&quot;,SPHEROID[&quot;WGS 84&quot;,6378137,298.257223563,AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]],AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]],PRIMEM[&quot;Greenwich&quot;,0,AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]],UNIT[&quot;degree&quot;,0.01745329251994328,AUTHORITY[&quot;EPSG&quot;,&quot;9122&quot;]],AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]]" title="Spherical coordinate reference (WGS 84)" url="http://spatialreference.org/ref/epsg/wgs-84/"/> 
     283</coordinateReference> 
    274284</main> 
     285</document> 
  • CMIP6dreqbuild/trunk/srcMisc/dreq_consol_dreq.py

    r386 r397  
    353353    return rq(mip,path,parent=self) 
    354354 
    355   def addRow( self, mip, tab, obj, grid, gok, comment,opt='',opar='',uid=None ): 
     355  def addRow( self, mip, tab, obj, grid, gok, comment,opt='',opar='',uid=None, preset=-2 ): 
    356356    if uid == None: 
    357357      k = str( uuid.uuid1() ) 
    358358    else: 
    359359      k = uid 
    360     self.rowList.append( (k,mip,tab, obj, grid, gok, comment, opt, opar) ) 
     360    self.rowList.append( (k,mip,tab, obj, grid, gok, comment, opt, opar, preset) ) 
    361361    return k 
    362362 
    363   def addItem( self, mip, tab, nn, expt=None, rid=None ): 
     363  def addItem( self, mip, tab, nn, nexmax, nenmax, nymax, expt=None, rid=None ): 
    364364    if not self.tabindx.has_key( tab ): 
    365365      self.tabindx[tab] = len(self.tablist) 
     
    368368    self.tablist[ix][mip] = nn 
    369369    self.mips[mip] += 1 
    370     self.records.append( (mip,tab,expt, rid,nn) ) 
     370    self.records.append( (mip,tab,expt, rid,nn, nexmax, nenmax, nymax) ) 
    371371 
    372372  def show(self,oo): 
     
    488488        gok = rv[r4i.mode-2] 
    489489        comment = rv[r4i.mode-1] 
    490         obj = rv[r4i.mode] 
     490        obj0 = rv[r4i.mode] 
     491        bb = string.split(obj0, ':' ) 
     492        if len(bb) > 1: 
     493          obj = bb[0] 
     494          preset = int( bb[1] ) 
     495        else: 
     496          obj = obj0 
     497          preset = -1 
    491498        opt = rv[1] 
    492499        opar = rv[2] 
     
    511518### add row if non-blank element found 
    512519        if nbl: 
    513           uid = self.parent.addRow( self.mip, tab, obj, grid, gok, comment, opt=opt, opar=opar, uid=uid ) 
    514            
    515  
    516  
     520          uid = self.parent.addRow( self.mip, tab, obj, grid, gok, comment, opt=opt, opar=opar, uid=uid, preset=preset ) 
    517521    return True 
    518522 
     
    526530      if mode == 2: 
    527531        snens, sny = this  
     532        cmt = '2:%s:%s:' % (snens,sny) 
    528533      else: 
    529534        snex, snens, sny = this  
     535        cmt = '3:%s:%s:%s:' % (snex,snens,sny) 
    530536 
    531537      nex = 0 
     538      nexmax = -999 
    532539      if mode == 3: 
    533540        print '######### MODE = 3: %s' % str(this) 
    534541        if type( snex ) in  {type(u' '),type(' ')}: 
    535           if snex[:3] in {u'tbd',u'TBD','tbd','TBD'}: 
     542          if snex[:3] in {u'all',u'ALL'}: 
     543            nex = 5 
     544            nexmax = -1 
     545          elif snex[:3] in {u'tbd',u'TBD','tbd','TBD'}: 
    536546            print 'WARN:005.0001: tbd encountered in experiment number' 
    537547            nex = 5 
     548            cmt += '*' 
    538549          else: 
    539550            print 'ERROR.001.0010: string in experiment number: %s' % snex 
    540551            nex = 0 
     552            cmt += '*' 
    541553        else: 
     554          print 'WARN:005.0002: experiment number .... need to check consistency etc: %s' % self.mip 
    542555          nex = int(snex) 
     556          nexmax = nex 
    543557        if type(nex) not in {type(1.), type(1)}: 
    544558          print 'ERROR.099.0100: non integer nex: %s:: %s:: %s' % (str(this),snex, type(snex)) 
     
    548562        if snens == u'all': 
    549563          nens = 1 
     564          nenmax = -1 
    550565        elif snens == '': 
    551566          nens = 0 
     567          nenmax = -999 
    552568        else: 
    553           nens = snens 
     569          nens = int( snens ) 
     570          nenmax = nens 
     571 
    554572        if sny == u'all': 
    555573          ny = nydef 
     574          ony = 'all' 
     575          nymax = -1 
    556576        elif sny == '': 
    557577          ny = 0 
     578          ony = 0 
     579          nymax = -999 
    558580        elif type(sny) in [type('x'),type(u'x')]: 
    559581            s = sny 
    560             print 'WARN.001.0002: %s' % s 
    561582            if string.find( s, '\n' ) != -1: 
    562583              bits = string.split( s, '\n' ) 
    563584              ny = int( bits[0] ) 
     585              nymax = ny 
     586              cmt += '*' 
     587              print 'WARN.001.0001: [%s] truncating time period option: %s' % (self.mip, str(s) ) 
    564588            else: 
    565589              x = string.split( s )[0] 
     
    567591                bb = string.split(x, '-' ) 
    568592                ny = int(bb[1])-int(bb[0]) 
     593                print 'WARN.001.0002: [%s] truncating time period option: %s' % (self.mip, str(s) ) 
     594                nymax = ny 
    569595              elif string.find( x, '/' ) != -1: 
    570596                bb = string.split(x, '/' ) 
    571597                ny = int(bb[0]) 
    572                 print 'WARN.001.0001: ignoring second time period option' 
     598                print 'WARN.001.0003: [%s] truncating time period option: %s' % (self.mip, str(s) ) 
     599                nymax = ny 
    573600              else: 
     601                print 'WARN.001.0004: [%s] time period option read as string: %s' % (self.mip, str(s) ) 
    574602                ny = int( x ) 
     603                nymax = ny 
    575604        else: 
    576605          ny = sny 
     606          nymax = ny 
    577607 
    578608        if type( ny ) in [type( 'x' ),type( u'x' )]: 
     
    581611            bb = string.split( bits[0], '-' ) 
    582612            ny = int(bb[1]) - int(bb[0]) 
     613            raise 
    583614 
    584615        tab = self.wk1.currentSi.row(j)[0].value 
     
    600631            tab = '%s!!%s' % (self.mip,tab) 
    601632 
    602         self.parent.addItem( self.mip, tab, ntot, expt=expt, rid=rid ) 
     633        self.parent.addItem( self.mip, tab, ntot, nexmax, nenmax, nymax, expt=expt, rid=rid ) 
    603634        return True 
    604635      except: 
     
    698729  sh[i[0]] = (i[0],i[1],k,k) 
    699730sh.close() 
     731 
     732s1 = set() 
    700733sh = shelve.open( '%s/requestLinks_tmp' % odir, 'n' ) 
    701734sh['__info__'] = { 'label':'requestLinks', 'title':'Links from variable groups to a request id' } 
    702 sh['__cols__'] = [ 'uid', 'mip', 'tab','objective','grid','gridreq','comment','opt','opar'] 
     735sh['__cols__'] = [ 'uid', 'mip', 'tab','objective','grid','gridreq','comment','opt','opar', 'preset'] 
    703736for i in rqs.rowList: 
    704737  sh[i[0]] = i[:] 
    705738  if i[3] in {'',u''}: 
    706739    print 'ERROR.099.0060: Blank objective: %s' % str(i) 
     740  s1.add( i[0] ) 
    707741sh.close() 
    708742sh = shelve.open( '%s/requestItems' % odir, 'n' ) 
    709743sh['__info__'] = { 'label':'requestItems', 'title':'Specification for a single experiment' , \ 
    710744     'comment':'Currently only has number of years -- need to include more details' } 
    711 sh['__cols__'] = [ 'mip', 'tab', 'expt','rlid','ny'] 
     745sh['__cols__'] = [ 'mip', 'tab', 'expt','rlid','ny', 'nexmax', 'nenmax', 'nymax'] 
    712746##('AerChemMIP', u'Omon_3d', u'CMIP6 historical', 'ad74be9a-26ef-11e5-8d9b-ac72891c3257', 0.0) 
    713747for i in rqs.records: 
     
    715749  if type(i[4]) not in  (type( 0 ),type(1.)): 
    716750    print 'ERROR.099.0001: non-integer ny: %s' % str(i) 
     751  if i[3] not in s1: 
     752    print 'SEVERE.005.00009: bad link ',i 
    717753  sh[k] = i[:] 
    718754sh.close() 
  • CMIP6dreqbuild/trunk/srcMisc/dreq_utils.py

    r386 r397  
    11 
    2 import string, collections 
     2import string, collections, shelve, uuid 
     3from sets import Set 
    34 
    45 
     
    139140         
    140141  def parse(self,mip,r4): 
    141     if r4[6] == 'objectives served': 
     142    if r4[6][:17] == 'objectives served': 
    142143          mode = 6 
    143     elif r4[7] == 'objectives served': 
     144    elif r4[7][:17] == 'objectives served': 
    144145          mode = 7 
    145146    else: 
    146           raise 'Unable to parse heading %s' % str(r4) 
     147          print 'Unable to parse heading %s' % str(r4) 
     148          print mip 
     149          print r4 
     150          raise 
    147151          mode = 999 
    148152    self.ixh = 0 
     
    195199     
    196200 
     201class parseShb(object): 
     202  def __init__(self,vdate,sx,cmip5gplk): 
     203    shb = shelve.open( 'dreq_consol_tables_reviewed_b_v%s' % vdate, 'r' ) 
     204    revTabIds = Set( shb.keys()[:] ) 
     205    revisedTabKeys = shb.keys() 
     206    revisedTabKeys.sort() 
     207    revisedTabKeysff = [] 
     208    revisedTabKeysNM = {} 
     209    tabsects = collections.defaultdict( Set ) 
     210    tabsectbyvar = collections.defaultdict( dict ) 
     211    tabsectuuid = collections.defaultdict( dict ) 
     212    tabuuid = {} 
     213    tabuuidrefs = collections.defaultdict( int ) 
     214    for r in revisedTabKeys: 
     215      if not tabuuid.has_key( r ): 
     216        tabuuid[r] = str( uuid.uuid1() ) 
     217 
     218      if string.find( r, '.' ) != -1: 
     219        mip,tab = string.split(r, '.' ) 
     220        assert sx.cmip5so.so.has_key(tab), 'FATAL.001.0001: revised table not found in original: %s' % tab 
     221        lnf = [] 
     222        lpe = [] 
     223        lmod = [] 
     224        for v in shb[r].keys(): 
     225          v1 = string.strip(v) 
     226          if not sx.cmip5so.so[tab].a.has_key(v1): 
     227            lnf.append(v) 
     228          else: 
     229            if shb[r][v][1] == sx.cmip5so.so[tab].a[v1][0]: 
     230              lpe.append(v) 
     231            else: 
     232              lmod.append(v) 
     233## 
     234## index sections of tables (for OMIP) 
     235## 
     236          tup = shb[r][v] 
     237      ### tup=(ix,p,sect,rowix) 
     238          if tup[2] != None: 
     239            tabsects[mip].add( (tab,tup[2]) ) 
     240            tabsectbyvar[mip]['%s.%s' % (tab,v)] = tup 
     241            sk = '%s.%s' % (tab,tup[2]) 
     242            if not tabsectuuid[mip].has_key( sk ): 
     243              tabsectuuid[mip][sk] = str( uuid.uuid1() ) 
     244 
     245        if len(lnf) > 0: 
     246          print 'ERROR.008.0001: Revised variables not in original: %s %s' % (r,str(lnf) ) 
     247        if len(lmod) == 0: 
     248          print 'INFO.008.0001: No modfications in %s' % r 
     249#### save uuid of table ... for use in requestLinks 
     250          revisedTabKeysNM[r] = cmip5gplk[tab] 
     251        else: 
     252          revisedTabKeysff.append( r ) 
     253 
     254    self.revGpIds = Set() 
     255    for t in revTabIds: 
     256      if t[-4:] == 'Omon': 
     257        self.revGpIds.add( t + '_oth' ) 
     258        self.revGpIds.add( t + '_3d' ) 
     259      elif t[-5:] == 'cfMon': 
     260        self.revGpIds.add( t + '_3dstd' ) 
     261        self.revGpIds.add( t + '_3dmod' ) 
     262        self.revGpIds.add( t + '_2dmod' ) 
     263        self.revGpIds.add( t + '_sim' ) 
     264 
     265    shb.close() 
     266    self.tabsectuuid = tabsectuuid 
     267    self.tabsectbyvar = tabsectbyvar 
     268    self.revisedTabKeysff = revisedTabKeysff 
     269    self.revisedTabKeysNM = revisedTabKeysNM 
     270    self.revisedTabKeys = revisedTabKeys 
     271    self.tabuuid = tabuuid 
  • CMIP6dreqbuild/trunk/srcMisc/scansh.py

    r361 r397  
    44odir = 'sh20150708' 
    55from scansh_cfg import odir 
     6odir = 'sh20150827' 
    67def sopen( id ): 
    78  sh = shelve.open( '%s/%s' % (odir,id ) ) 
     
    5960    r = rq.refti[k] 
    6061    if r[-1] != '__none__': 
    61       if rq.vars.has_key(r[-1]): 
     62      if rq.vars.has_key(r[-4]): 
    6263        nok += 1 
    6364      else: 
  • CMIP6dreqbuild/trunk/srcMisc/sx2.py

    r386 r397  
    557557## these are the reviewed cmip5 standard output tables. 
    558558## 
    559 shb = shelve.open( 'dreq_consol_tables_reviewed_b_v%s' % vdate, 'r' ) 
    560 revisedTabKeys = shb.keys() 
    561 revisedTabKeys.sort() 
    562 revisedTabKeysff = [] 
    563 revisedTabKeysNM = {} 
    564 tabsects = collections.defaultdict( Set ) 
    565 tabsectbyvar = collections.defaultdict( dict ) 
    566 tabsectuuid = collections.defaultdict( dict ) 
    567 tabuuid = {} 
    568559tabuuidrefs = collections.defaultdict( int ) 
    569 for r in revisedTabKeys: 
    570   if not tabuuid.has_key( r ): 
    571     tabuuid[r] = str( uuid.uuid1() ) 
    572  
    573   if string.find( r, '.' ) != -1: 
    574     mip,tab = string.split(r, '.' ) 
    575     assert sx.cmip5so.so.has_key(tab), 'FATAL.001.0001: revised table not found in original: %s' % tab 
    576     lnf = [] 
    577     lpe = [] 
    578     lmod = [] 
    579     for v in shb[r].keys(): 
    580       v1 = string.strip(v) 
    581       if not sx.cmip5so.so[tab].a.has_key(v1): 
    582         lnf.append(v) 
    583       else: 
    584         if shb[r][v][1] == sx.cmip5so.so[tab].a[v1][0]: 
    585           lpe.append(v) 
    586         else: 
    587           lmod.append(v) 
    588 ## 
    589 ## index sections of tables (for OMIP) 
    590 ## 
    591       tup = shb[r][v] 
    592       ### tup=(ix,p,sect,rowix) 
    593       if tup[2] != None: 
    594         tabsects[mip].add( (tab,tup[2]) ) 
    595         tabsectbyvar[mip][v] = tup 
    596         if not tabsectuuid[mip].has_key( tup[2] ): 
    597           tabsectuuid[mip][tup[2]] = str( uuid.uuid1() ) 
    598  
    599     if len(lnf) > 0: 
    600       print 'ERROR.008.0001: Revised variables not in original: %s %s' % (r,str(lnf) ) 
    601     if len(lmod) == 0: 
    602       print 'INFO.008.0001: No modfications in %s' % r 
    603 #### save uuid of table ... for use in requestLinks 
    604       revisedTabKeysNM[r] = cmip5gplk[tab] 
    605     else: 
    606       revisedTabKeysff.append( r ) 
    607  
    608 revGpIds = Set() 
    609 for t in revTabIds: 
    610   if t[-4:] == 'Omon': 
    611     revGpIds.add( t + '_oth' ) 
    612     revGpIds.add( t + '_3d' ) 
    613   elif t[-5:] == 'cfMon': 
    614     revGpIds.add( t + '_3dstd' ) 
    615     revGpIds.add( t + '_3dmod' ) 
    616     revGpIds.add( t + '_2dmod' ) 
    617     revGpIds.add( t + '_sim' ) 
    618      
    619 shb.close() 
    620 gpids = gpids + revisedTabKeysff 
     560 
     561### 
     562### get some tables for looking up links from shelve 
     563### 
     564shbx = dreq_utils.parseShb(vdate,sx,cmip5gplk) 
     565 
     566 
     567gpids = gpids + shbx.revisedTabKeysff 
    621568ks = eervg.keys() 
    622569ks.sort() 
     
    658605  if not ok: 
    659606## revTabIds has table names, revGpIds has group names 
    660     if k in revTabIds or k in revGpIds: 
    661       if k in revGpIds: 
     607    if k in revTabIds or k in shbx.revGpIds: 
     608      if k in shbx.revGpIds: 
    662609         print 'OK2: ',k 
    663610      kmapk2[k0] = ('CMIP5Rev',k) 
     
    717664  lookup1['CMIP5'].d[k] = [u,] 
    718665   
    719       
    720   
    721666### shlnks carries the "request scoping rows" ### 
    722 ### somehow not getting labels for Omon_oth etc 
    723667ndup = 0 
    724668for k in shlnks.keys(): 
     
    759703    ##print k2, cls  
    760704      if cls == 'new': 
    761         if kkk in revisedTabKeys: 
     705        if kkk in shbx.revisedTabKeys: 
    762706          lab = kkk 
    763707          cls = 'rev' 
     
    779723      if sx2e.r1.match( lab ) == None: 
    780724        print 'NON_COMPLIANT label', lab,k2, cls 
    781       ## print k,k2,shrvg[id] 
    782       ## assert False 
    783725      tmp[id].append(  ([id,mip,lab,'%s: %s' % (mip,lab), cls, refNote],[ttt,kkk]) ) 
    784726 
     
    834776  sh[g[0]] = g[:] 
    835777sh.close() 
     778 
     779############################################## 
    836780a = {k for k in sss.keys() if len(sss[k]) > 1} 
    837781if len(a) > 0: 
    838782  for k in a: 
    839783    print 'SEVERE.090.0002: ',k,sss[k] 
     784############################################## 
    840785 
    841786sh = shelve.open( '%s/requestVarSections' % odir, 'n' ) 
     
    880825sh = shelve.open( '%s/requestLinks' % odir, 'n' ) 
    881826sh['__info__'] = { 'label':'requestLinks', 'title':'Links from variable groups to a request id' } 
    882 sh['__cols__'] = [ 'uid', 'mip', 'tab','objective','grid','gridreq','comment','opt','opar','ref','refNote','refid'] 
     827sh['__cols__'] = [ 'uid', 'mip', 'tab','objective','grid','gridreq','comment','opt','opar','preset','ref','refNote','refid'] 
    883828ndup = 0 
    884829for k in shlnks.keys(): 
     
    892837      ttt,kkk = kmapk2[k1] 
    893838 
    894       if revisedTabKeysNM.has_key(k1): 
     839      if shbx.revisedTabKeysNM.has_key(k1): 
    895840        print 'INFO.010.0010: Replacing link for %s' % k1 
    896         id = revisedTabKeysNM[k1] 
     841        id = shbx.revisedTabKeysNM[k1] 
    897842      else: 
    898843        id = lookup1[ttt].d[kkk][0] 
     
    945890  rwix = 0 
    946891  mipt = sx.ee_mip[k][22] 
    947   if tabuuid.has_key( mipt ): 
    948     gpid = tabuuid[mipt] 
     892  if shbx.tabuuid.has_key( mipt ): 
     893    gpid = shbx.tabuuid[mipt] 
    949894  p = 0 
    950895  if mipt[:6] == "CMIP5_": 
     
    989934      v1 = v0 
    990935## check to see if sections are defined. 
    991     if tabsectbyvar.has_key(m): 
    992       if tabsectbyvar[m].has_key(v1): 
    993         gpid = tabsectuuid[m][ tabsectbyvar[m][v1][2] ] 
    994         rwix = tabsectbyvar[m][v1][3] 
    995         p = tabsectbyvar[m][v1][1] 
     936    if shbx.tabsectbyvar.has_key(m): 
     937      tv = '%s.%s' % (t,v1) 
     938      if shbx.tabsectbyvar[m].has_key(tv): 
     939        gpid = shbx.tabsectuuid[m][ '%s.%s' % (t,shbx.tabsectbyvar[m][tv][2]) ] 
     940        rwix = shbx.tabsectbyvar[m][tv][3] 
     941        p = shbx.tabsectbyvar[m][tv][1] 
    996942        rwixkkk += 1 
    997943 
     
    1040986    if len( sx.ee_mip[k][:] ) != 24: 
    1041987      print 'ERROR.015.0002: Bad record length %s: %s' % (k,sx.ee_mip[k]) 
     988    rec = sx.ee_mip[k][:]  + [kl[0],gpid,rwix,p] 
     989    if rec[21] == u'bsi' or rec[15] == u'bsi': 
     990      print 'INFO.999.00001: ',[rec[i] for i in [15,21,22,25]] 
    1042991    sh[k] = sx.ee_mip[k][:]  + [kl[0],gpid,rwix,p]  
    1043992 sh.close() 
     
    1048997 keys.sort() 
    1049998 k0 = [] 
    1050  for k in revisedTabKeysff: 
     999 for k in shbx.revisedTabKeysff: 
    10511000   bb = string.split(k, '.' ) 
    10521001   if len(bb) == 2: 
     
    11431092## add OMIP (+ ....?) 
    11441093 nomip = 0 
    1145  for k in tabuuid.keys(): 
     1094 for k in shbx.tabuuid.keys(): 
    11461095   if k[0] != '_': 
    11471096  ####cmip5tbs.append( [u,"CMIP6",k,"CMIP6 CMOR Table: %s" % k, "CMIP5", "CMIP5 MIP Table: %s" % k] ) 
    1148      if tabuuidrefs[tabuuid[k]]  > 0: 
     1097     if tabuuidrefs[shbx.tabuuid[k]]  > 0: 
    11491098        mip,tab = string.split( k, '.' ) 
    1150         u = tabuuid[k] 
    1151         sh[u] = [u,mip,tab,"CMOR Table variant: %s" % k, "CMIP5Rev", k ] 
     1099        u = shbx.tabuuid[k] 
     1100        if mip in {u'OMIP', 'OMIP'}: 
     1101          lab = '%s-%s' % (mip,tab) 
     1102        else: 
     1103          lab = tab 
     1104        sh[u] = [u,mip,lab,"CMOR Table variant: %s" % k, "CMIP5Rev", k ] 
    11521105####'OMIP', u'OMIP-fx', u'OMIP: OMIP-fx', 'CMIP5Rev', u'OMIP.fx' 
    11531106        print 'INFO: ADDING GROUP: %s' % str(sh[u]) 
     
    11611114 p = dreq_utils.prconsolexpt() 
    11621115 p.parse(sht) 
     1116 
     1117## info about the deck to fill in. 
     1118 wb2 = utils_wb.workbook( 'CMIP6DataRequest_deckInfo.xls' ) 
     1119 sht2 = wb2.book.sheet_by_name( 'Experiments' ) 
     1120 
     1121## appends records to "p.records" 
     1122 p.parse(sht2) 
     1123 
    11631124 sh = shelve.open( '%s/experiments' % odir, 'n' ) 
    11641125 sh['__info__'] = { 'label':'experiments', 'title':'Experiments', 'prov':'ConsolidatedExperiments' } 
Note: See TracChangeset for help on using the changeset viewer.