def run_simulation(request, response): jsonData = request.json #parse advanced settings: #DO IT HERE, NOW PRIOR TO ANY CALCULATION!!!! #FIXME: HANDLE EXCEPTIONS!!!!! key_mcerpt_npts = gk.DNP mcerp.npts = glb.mcerp_npts if not key_mcerpt_npts in jsonData else glb.cast(key_mcerpt_npts, jsonData[key_mcerpt_npts]) runinfo = RunInfo(jsonData) ret= {} if runinfo.status()==1: #running, ok runinfo.msg("Process starting at {0} (server time)".format(time.strftime("%c"))) run(runinfo) RUNS[runinfo.session_id()] = runinfo #should we add a Lock ? theoretically unnecessary... ret = {'session_id':runinfo.session_id(), 'scenario_id':0} else: ret = {'error': runinfo.errormsg or "Unknown error (please contact the administrator)"} return response.tojson(ret)
def __setitem__(self, key, value): params = glb.params k_low = key.lower() if k_low in params: p = params[k_low] value = glb.cast(p, value) #cast to db_val: if _scenario_name in p: self.__db[k_low] = val_db(k_low, p, value) self.__dbhash = None #cast for scenario (self): value = val_sc(k_low, p, value) super(Scenario, self).__setitem__(k_low, value)
def fdsn_query(request, response): #when this is not a post request, print anyway the table. Therefore: try: query_url = "" try: form = request.post s = [] catalog = '' for key in form.keys(): l = form.getlist(key) if key == 'catalog': catalog=l[0] else: par = glb.params[key] fdsn_name = par['fdsn_name'] istime = key == gk.TIM if istime: vmin = glb.cast(par,l[0]) vmax = glb.cast(par,l[1], round_ceil=True) #fdsn format: 2014-12-07T01:22:03.2Z. Let's conver it vmin = "start{0}={1:04d}-{2:02d}-{3:02d}T{4:02d}:{5:02d}:{6:02d}.{7:d}Z".format(fdsn_name,vmin.year, vmin.month, vmin.day, vmin.hour, vmin.minute, vmin.second,vmin.microsecond) vmax = "end{0}={1:04d}-{2:02d}-{3:02d}T{4:02d}:{5:02d}:{6:02d}.{7:d}Z".format(fdsn_name,vmax.year, vmax.month, vmax.day, vmax.hour, vmax.minute, vmax.second,vmax.microsecond) else: vmin = "min{0}={1}".format(fdsn_name, str(glb.cast(par,l[0],dim=-1))) #-1: needs scalar vmax = "max{0}={1}".format(fdsn_name, glb.cast(par,l[1],dim=-1)) #-1: needs scalar s.append('{0}&{1}'.format(vmin, vmax)) query_url = fe.FDSN_CATALOG[catalog]+ ('&'.join(s)) except:pass #define here the ORDER of the columns! cols = ("EventLocationName","Time","Latitude","Longitude", "Depth", "Magnitude") #, "EventId") submittable_keys = {"Latitude": gk.LAT,"Longitude": gk.LON, "Depth": gk.DEP, "Magnitude": gk.MAG} #numeric are also submittable value = "" def esc(s, quote=True): return miniwsgi.escape(s, quote) def parse_depth(val): try: if val[0] is not None : val[0] /= 1000 #if val[1] is not None : val[1] /= 1000 #depth uncertainty SEEMS in km!!! except: pass value = [] if not query_url else fe.get_events(query_url, _required_=fe.DEF_NUMERIC_FIELDS, _callback_={fe.F_DEPTH: parse_depth}) #getCaravanEvents(xmlurl) vals = StringIO() vals.write(request.urlbody) vals.write("<table class='fdsn'><thead class='title'><tr>\n") vals.write(''.join("<td data-sort='{0}'>{1}</td>".format('num' if v in submittable_keys else 'str', esc(v)) for v in cols)) vals.write('\n</tr>\n</thead>') vals.write("<tbody>") for v in value: vals.write('<tr>') unc = {} if not 'Uncertainty' in v else v['Uncertainty'] for k in cols: tdval = v[k] tdstr = str(tdval) if k!="Time" else str(tdval).replace("T"," ").replace("Z","") tdsubmit_value = tdstr tdsubmit_key = None if k in submittable_keys: tdsubmit_key = submittable_keys[k] if k in unc: tdstr+=" ± " + str(unc[k]) pr = glb.params[tdsubmit_key] if 'distrib' in pr: dstr = pr['distrib'].lower() tdsubmit_value = str(tdval) + " " + str(unc[k]/2) if dstr == 'normal' else str(tdval - unc[k]) + " " + str(tdval + unc[k]) vals.write('<td') vals.write(' data-value="{}"'.format(esc(tdstr))) if tdsubmit_key: vals.write(' data-submit-key="{}" data-submit-value="{}"'.format(esc(tdsubmit_key), esc(tdsubmit_value))) vals.write('>{}</td>'.format(tdstr)) vals.write('</tr>') vals.write("</tbody></table>") value = vals.getvalue() vals.close() except Exception as e: value = "<span class=error>"+esc(str(e))+"</span>" if CARAVAN_DEBUG: traceback.print_exc() s = StringIO() s.write(value) s.write("\n</body>\n</html>") v = s.getvalue() s.close() # if p == 'catalog': # s= cat[p].value + s # else return v
req_type='POST') data = json.loads(cont["content"]) updated = data["seiscomp"]["lastUpdate"] for jsonData in data["seiscomp"]["events"]: jsonData.update({ u'tess_ids': [1, 2, 3, 4, 5, 6, 7], u'eid': '%s' % jsonData["eventID"], u'ipe': 3, u'dep': jsonData["depth"], u'gm_only': False, u'str': u'90', u'mcerp_npts': 40 }) key_mcerpt_npts = gk.DNP mcerp.npts = glb.mcerp_npts if not key_mcerpt_npts in jsonData else glb.cast( key_mcerpt_npts, jsonData[key_mcerpt_npts]) runinfo = RunInfo(jsonData) ret = {} if runinfo.status() == 1: #running, ok runinfo.msg("Process starting at {0} (server time)".format( time.strftime("%c"))) try: run(runinfo) except Exception, e: print "Run-Error for event %s: %s" % (jsonData["eventID"], str(e)) RUNS[runinfo.session_id()] = runinfo