# a tentative script to upload all existing drstree "versions" into CMIP sqlite database # each variable, mip, experiment, model, ensemble combination add a new instance in "instance" # for each instance there should be at least one version in "version" table # for each version add at least one file in table "files" from __future__ import print_function from ARCCSSive.CMIP5.update_db_functions import insert_unique, add_bulk_items from ARCCSSive.CMIP5.other_functions import * #NB tmptree root dir is also defined there from ARCCSSive.CMIP5 import DB from ARCCSSive.CMIP5.Model import Instance, Version, VersionFile # open local database using ARCSSive interface conn = DB.connect() db = conn.session #kwargs={"institute":"BCC","model":"bcc-csm1-1-m", "experiment":"historical"} kwargs=defaultdict(lambda: "*") #kwargs=dict(model="IPSL-CM5A-MR", experiment="amip", mip="fx") kwargs=dict(model="IPSL-CM5A-MR", experiment="amip", frequency="mon") #loop through entire drstree or a subdir by using constraints **kwargs instances=list_drstree(**kwargs) print(instances) #for each instance individuated add instance row for inst in instances: # call file_details to retrieve experiment, variable, model etc. from filename # call drs_details to retrieve model, experiment, freq. & realm (become mip), variable, ensemble from drstree path # return dictionary
f = cdms2.open(fpath,'r') except: print("INVALID NETCDF,%s" % fpath) return None # read attributes try: realm=f.modeling_realm except: realm=None f.close() return realm # open local database using ARCSSive interface cmip5 = DB.connect() db = cmip5.session #flist = "fileslist.csv" flist = "/home/581/pxp581/Sep15diff.csv" #loop through entire drstree or a subdir by using constraints **kwargs # variable,mip_table,model,experiment,ensemble,realm,version,path instances=list_tmpdir(flist) #for each instance individuated add instance row for kw_instance in instances: # create dictionary of fields for new instance var=kw_instance['variable'] kw_version={} kw_files={} kw_version['version'] = kw_instance.pop('version')