References to project directories

  • dependencies:
    • tinydb: pip install tinydb

In [1]:
cordex_dir = "/home/stephan/tmp/CORDEX/"
print cordex_dir


/home/stephan/tmp/CORDEX/

In [2]:
from tinydb import TinyDB,Query
#from os import listdir, walk
import glob
import json

In [3]:
json_files = glob.glob(cordex_dir+"*.json")
print json_files


['/home/stephan/tmp/CORDEX/Kindermann_tst2.json', '/home/stephan/tmp/CORDEX/stasi_s@freenet.de.ipynb.json', '/home/stephan/tmp/CORDEX/ki_stk1.ipynb.json', '/home/stephan/tmp/CORDEX/stasi_snkinder@freenet.de.ipynb.json', '/home/stephan/tmp/CORDEX/ki_sk1.ipynb.json', '/home/stephan/tmp/CORDEX/Kindermann_tst2.ipynb.json']

In [6]:
json_dicts = []
for json_file in json_files:
    with open(json_file) as j_file:
        json_dicts.append(json.load(j_file))
                          
#print json_dicts

In [4]:
db = TinyDB("/home/stephan/tmp/db.json")

In [7]:
for my_dict in json_dicts:
    db.insert(my_dict)

In [9]:
#db.all()

In [8]:
Test = Query()
results = db.search(Test.sub.last_name == 'Kindermann')

results = db.all()
print results


[{u'model_id': u'MPI-M', u'last_name': u'', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': [u'clt', u'evspsbl', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'ta200', u'ta500', u'ta850', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'zg200', u'zg500'], u'data_path': u'', u'uniqueness_of_tracking_id': u'yes', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'tas_AFR-44_MPI-M-MPI-ESM-LR_rcp26_r1i1p1_MPI-CSC-REMO2009_v1_mon_yyyymm-yyyymm.nc', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'DKRZ', u'sub': {u'status': u'stored', u'last_name': u'Kindermann', u'package_name': u'Kindermann_tst2.json', u'keyword': u'tst2', u'timestamp': u'2016-04-26 15:51:41.445454', u'form_path': u'/home/stephan/tmp/CORDEX/Kindermann_tst2.ipynb', u'email': u'stephan.kindermann@gmail.com', u'repo': u'/home/stephan/tmp/CORDEX', u'status_flag_validity': 0, u'ticket_id': u'', u'package_path': u'/home/stephan/tmp/CORDEX/Kindermann_tst2.json', u'form_name': u'Kindermann_tst2', u'check_status': u'not checked', u'responsible_person': u'pl', u'id': u'416b048a-0bae-11e6-8bdc-080027f178b4'}, u'variable_list_day': [u'clh', u'clivi', u'cll', u'clm', u'clt', u'clwvi', u'evspsbl', u'evspsblpot', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'prc', u'prhmax', u'prsn', u'prw', u'ps', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'tauu', u'tauv', u'ta200', u'ta500', u'ta850', u'ts', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'wsgsmax', u'zg200', u'zg500', u'zmla'], u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': [u'clt', u'evspsbl', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'ta200', u'ta500', u'ta850', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'zg200', u'zg500'], u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': [u'areacella', u'mrsofc', u'orog', u'rootd', u'sftgif', u'sftlf'], u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'initial_version', u'email': u'', u'institute_id': u'DKRZ'}, {u'model_id': u'', u'last_name': u'stasi', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': u'', u'data_path': u'', u'uniqueness_of_tracking_id': u'', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'', u'sub': {u'status': [u'stored'], u'package_name': u'stasi_s@freenet.de.ipynb.json', u'keyword': u's@freenet.de', u'timestamp': u'2016-04-26 13:20:32.817468', u'source_path': u'/home/stephan/Repos/ENES-EUDAT/submission_forms/dkrz_forms/Templates/CORDEX_submission_form.ipynb', u'form_path': u'/home/stephan/tmp/CORDEX/stasi_s@freenet.de.ipynb', u'repo': u'/home/stephan/tmp/CORDEX', u'commit_hash': u'bc94260d8e396a22f9f34f5e956ed35e9f0b5361', u'package_path': u'/home/stephan/tmp/CORDEX/stasi_s@freenet.de.ipynb.json', u'check_status': u'not checked', u'form_name': u'stasi_s@freenet.de.ipynb', u'responsible_person': u'pl', u'id': u'e3deec4e-0ba0-11e6-ab96-080027f178b4', u'ticket_id': u''}, u'variable_list_day': u'', u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': u'', u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': u'', u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'', u'email': u'ki', u'institute_id': u''}, {u'model_id': u'', u'last_name': u'ki', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': u'', u'data_path': u'', u'uniqueness_of_tracking_id': u'', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'', u'sub': {u'status': [u'stored'], u'package_name': u'ki_stk1.ipynb.json', u'keyword': u'stk1', u'timestamp': u'2016-04-26 12:55:50.944793', u'source_path': u'/home/stephan/Repos/ENES-EUDAT/submission_forms/dkrz_forms/Templates/CORDEX_submission_form.ipynb', u'form_path': u'/home/stephan/tmp/CORDEX/ki_stk1.ipynb', u'repo': u'/home/stephan/tmp/CORDEX', u'commit_hash': u'03fca98d5d7f8cad2a77a8bd158c7c18b58c7daa', u'package_path': u'/home/stephan/tmp/CORDEX/ki_stk1.ipynb.json', u'form_name': u'ki_stk1.ipynb', u'check_status': u'not checked', u'responsible_person': u'pl', u'id': u'70a02822-0b9d-11e6-96e1-080027f178b4', u'ticket_id': u''}, u'variable_list_day': u'', u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': u'', u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': u'', u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'', u'email': u'st@freenet.de', u'institute_id': u''}, {u'model_id': u'', u'last_name': u'stasi', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': u'', u'data_path': u'', u'uniqueness_of_tracking_id': u'', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'', u'sub': {u'status': [u'stored'], u'package_name': u'stasi_snkinder@freenet.de.ipynb.json', u'keyword': u'snkinder@freenet.de', u'timestamp': u'2016-04-26 13:11:02.865114', u'source_path': u'/home/stephan/Repos/ENES-EUDAT/submission_forms/dkrz_forms/Templates/CORDEX_submission_form.ipynb', u'form_path': u'/home/stephan/tmp/CORDEX/stasi_snkinder@freenet.de.ipynb', u'repo': u'/home/stephan/tmp/CORDEX', u'commit_hash': u'f2f0341531738567207a70f7851e56f29aca6d59', u'package_path': u'/home/stephan/tmp/CORDEX/stasi_snkinder@freenet.de.ipynb.json', u'check_status': u'not checked', u'form_name': u'stasi_snkinder@freenet.de.ipynb', u'responsible_person': u'pl', u'id': u'902cf3da-0b9f-11e6-a1b0-080027f178b4', u'ticket_id': u''}, u'variable_list_day': u'', u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': u'', u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': u'', u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'', u'email': u'ki', u'institute_id': u''}, {u'model_id': u'', u'last_name': u'ki', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': u'', u'data_path': u'', u'uniqueness_of_tracking_id': u'', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'', u'sub': {u'status': [u'stored'], u'package_name': u'ki_sk1.ipynb.json', u'keyword': u'sk1', u'timestamp': u'2016-04-26 13:24:41.238144', u'source_path': u'/home/stephan/Repos/ENES-EUDAT/submission_forms/dkrz_forms/Templates/CORDEX_submission_form.ipynb', u'form_path': u'/home/stephan/tmp/CORDEX/ki_sk1.ipynb', u'repo': u'/home/stephan/tmp/CORDEX', u'commit_hash': u'c58cdf81a9175a0987d2dc1dd214125f3b2dedbe', u'package_path': u'/home/stephan/tmp/CORDEX/ki_sk1.ipynb.json', u'form_name': u'ki_sk1.ipynb', u'check_status': u'not checked', u'responsible_person': u'pl', u'id': u'77f77cde-0ba1-11e6-8709-080027f178b4', u'ticket_id': u''}, u'variable_list_day': u'', u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': u'', u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': u'', u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'', u'email': u's@freenet.de', u'institute_id': u''}, {u'model_id': u'', u'last_name': u'', u'experiment_id': u'', u'data_qc_status': u'', u'variable_list_mon': [u'clt', u'evspsbl', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'ta200', u'ta500', u'ta850', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'zg200', u'zg500'], u'data_path': u'', u'uniqueness_of_tracking_id': u'', u'directory_structure': u'', u'exclude_variables_list': u'', u'example_file_name': u'', u'time_period': u'', u'ing': {u'responsible_person': u'pl', u'target_directory': u'', u'ticket_id': u''}, u'grid_as_specified_if_rotated_pole': u'', u'institution': u'', u'sub': {u'status': [u'stored'], u'last_name': u'Kindermann', u'package_name': u'', u'keyword': u'tst2', u'timestamp': u'2016-04-26 14:44:23.696508', u'form_path': u'/home/stephan/tmp/CORDEX/Kindermann_tst2.ipynb', u'id': u'85360ce8-0bac-11e6-9fa7-080027f178b4', u'repo': u'/home/stephan/tmp/CORDEX', u'ticket_id': u'', u'package_path': u'', u'check_status': u'not checked', u'form_name': u'Kindermann_tst2.ipynb', u'responsible_person': u'pl', u'email': u'stephan.kindermann@gmail.com'}, u'variable_list_day': [u'clh', u'clivi', u'cll', u'clm', u'clt', u'clwvi', u'evspsbl', u'evspsblpot', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'prc', u'prhmax', u'prsn', u'prw', u'ps', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'tauu', u'tauv', u'ta200', u'ta500', u'ta850', u'ts', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'wsgsmax', u'zg200', u'zg500', u'zmla'], u'first_name': u'', u'che': {u'report_dir': u'', u'status': u'', u'responsible_person': u'hdh', u'ticket_id': u''}, u'data_qc_comment': u'', u'pup': {u'status': u'', u'responsible_person': u'kb', u'ticket_id': u'', u'facet_search_string': u''}, u'variable_list_sem': [u'clt', u'evspsbl', u'hfls', u'hfss', u'hurs', u'huss', u'hus850', u'mrfso', u'mrro', u'mrros', u'mrso', u'pr', u'psl', u'rlds', u'rlus', u'rlut', u'rsds', u'rsdt', u'rsus', u'rsut', u'sfcWind', u'sfcWindmax', u'sic', u'snc', u'snd', u'snm', u'snw', u'sund', u'tas', u'tasmax', u'tasmin', u'ta200', u'ta500', u'ta850', u'uas', u'ua200', u'ua500', u'ua850', u'vas', u'va200', u'va500', u'va850', u'zg200', u'zg500'], u'terms_of_use': u'', u'project': u'CORDEX', u'variable_list_fx': [u'areacella', u'mrsofc', u'orog', u'rootd', u'sftgif', u'sftlf'], u'grid_mapping_name': u'', u'data_information': u'', u'submission_type': u'', u'email': u'', u'institute_id': u''}]

In [26]:
from IPython.display import HTML

def summary_html(mylist):
        html = []
            
        html.append("<table width=100%>")
        html.append("<tr>")
        html.append("<td><b>form name<b></td>")
        html.append("<td><b>keyword<b></td>")
        html.append("<td><b>timestamp<b></td>")
        html.append("<td><b>model / exp<b></td>")   
        html.append("<td><b>status</td>")
        html.append("</tr>")
        
        for entry in mylist:
          #print entry['sub']
          html.append("<tr>")
          html.append("<td>{0}</td>".format(entry['sub']['form_name']))
          html.append("<td>{0}</td>".format(entry['sub']['keyword']))
          html.append("<td>{0}</td>".format(entry['sub']['timestamp']))
          html.append("<td>{0}</td>".format(entry['model_id']))
          html.append("<td>{0}</td>".format(entry['sub']['status']))
          html.append("</tr>")
        
        html.append("</table>")
        return ''.join(html)

HTML(summary_html(results))


Out[26]:
form namekeywordtimestampmodel / expstatus
Kindermann_tst2tst22016-04-26 15:51:41.445454MPI-Mstored
stasi_s@freenet.de.ipynbs@freenet.de2016-04-26 13:20:32.817468[u'stored']
ki_stk1.ipynbstk12016-04-26 12:55:50.944793[u'stored']
stasi_snkinder@freenet.de.ipynbsnkinder@freenet.de2016-04-26 13:11:02.865114[u'stored']
ki_sk1.ipynbsk12016-04-26 13:24:41.238144[u'stored']
Kindermann_tst2.ipynbtst22016-04-26 14:44:23.696508[u'stored']

In [28]:
#from IPython.display import FileLink, FileLinks

#FileLinks("/home/stephan/tmp/CORDEX")

In [ ]: