def add_calib_file_to_cdb(exp, dircalib, calibvers, detname, cftype, fname, cfdir, listdicts, **kwargs): """ """ d = history_dict_for_file(listdicts, fname) resp = parse_calib_file_name(fname) begin, end, ext = resp if resp is not None else (None, None, None) if begin is not None: begin = int(begin) if None in (begin, end, ext): return fpath = '%s/%s' % (cfdir, fname) verbose = kwargs.get('verbose', False) data = gu.load_textfile(fpath, verbose) if cftype in ('geometry','code_geometry') else\ load_xtcav_calib_file(fpath) if is_xtcav(calibvers, cftype) else\ load_txt(fpath) # using NDArrIO if isinstance(data, dict): serialize_dict(data) logger.debug(info_dict(data)) #print_dict(data) #data = json.dumps(data) # (data,ensure_ascii=True) json.dumps converts dict -> str # .replace("'", '"') for json data = str(data) if isinstance(data, np.ndarray): check_data_shape(data, detname, cftype) begin_time, end_time = run_begin_end_time(exp, int(begin)) if verbose: ndu.print_ndarr(data, 'scan calib: data') msg = 'scan calib: %s %s %s %s %s %s %s %s %s' % ( exp, cfdir, fname, begin, end, ext, calibvers, detname, cftype) logger.info(msg) logger.info('begin_time: %s end_time: %s' % (begin_time, end_time)) if data is None: msg = 'data is None, conversion is dropped for for file: %s' % fpath logger.warning(msg) return kwargs['run'] = begin kwargs['run_end'] = end kwargs['detector'] = detname kwargs['ctype'] = cftype kwargs['time_sec'] = begin_time kwargs['end_time'] = end_time kwargs['time_stamp'] = dbu._timestamp(begin_time) kwargs['extpars'] = d if d is not None else { } # just in case save entire history dict #kwargs['comment'] = 'HISTORY: %s' % d.get('comment', '') dbu.insert_calib_data(data, **kwargs)
def test_add_data_and_two_docs(exp=TEST_EXPNAME, det=TEST_DETNAME): from psana.pyalgos.generic.Utils import get_login t0_sec = time() kwa = {'user' : get_login(), 'experiment': exp, 'detector' : det, 'ctype' : 'testnda', 'run' : 123, 'time_sec' : t0_sec, 'time_stamp': mu._timestamp(int(t0_sec)), } data = mu.get_test_nda() id_data_exp, id_data_det, id_doc_exp, id_doc_det =\ add_data_and_two_docs(data, exp, det, url=cc.URL_KRB, krbheaders=cc.KRBHEADERS, **kwa) print('time to insert data and two docs: %.6f sec' % (time()-t0_sec))
def add_calib_file_to_cdb(exp, dircalib, calibvers, detname, cftype, fname, cfdir, listdicts, **kwargs) : """ """ d = history_dict_for_file(listdicts, fname) resp = parse_calib_file_name(fname) begin, end, ext = resp if resp is not None else (None, None, None) if None in (begin, end, ext) : return fpath = '%s/%s' % (cfdir, fname) verbose = kwargs.get('verbose', False) data = gu.load_textfile(fpath, verbose) if cftype in ('geometry','code_geometry') else\ load_xtcav_calib_file(fpath) if is_xtcav(calibvers, cftype) else\ load_txt(fpath) # using NDArrIO begin_time, end_time = run_begin_end_time(exp, int(begin)) if verbose : ndu.print_ndarr(data, 'scan calib: data') msg = 'scan calib: %s %s %s %s %s %s %s %s %s' % (exp, cfdir, fname, begin, end, ext, calibvers, detname, cftype) logger.info(msg) logger.info('begin_time: %s end_time: %s' % (begin_time, end_time)) if data is None : msg = 'data is None, conversion is dropped for for file: %s' % fpath logger.warning(msg) return kwargs['run'] = begin kwargs['run_end'] = end kwargs['detector'] = detname kwargs['ctype'] = cftype kwargs['time_sec'] = begin_time kwargs['end_time'] = end_time kwargs['time_stamp'] = dbu._timestamp(begin_time) kwargs['extpars'] = d # just in case save entire history dict #kwargs['comment'] = 'HISTORY: %s' % d.get('comment', '') dbu.insert_calib_data(data, **kwargs)