In [179]:
import os; print os.getcwd()
print [f for f in os.listdir('.') if f.endswith(('.py', '.ini', '.xml'))]
In [180]:
print open('job.ini').read()
In [181]:
from openquake.baselib.general import import_all; import_all('my_calculators')
Out[181]:
In [182]:
from openquake.commonlib import readinput
In [183]:
oqparam = readinput.get_oqparam('job.ini'); oqparam
Out[183]:
In [184]:
for name, value in oqparam:
print name, '=', repr(value)
In [185]:
for coords in oqparam.sites: print coords
In [186]:
mesh = readinput.get_mesh(oqparam)
for site in mesh: print site
In [187]:
[gsim] = readinput.get_gsims(oqparam); gsim
Out[187]:
In [188]:
print open('rupture_model.xml').read()
In [189]:
rupture = readinput.get_rupture(oqparam); rupture
Out[189]:
In [190]:
rupture.mag, rupture.rake, rupture.surface
Out[190]:
In [191]:
imts = readinput.get_imts(oqparam); imts
Out[191]:
In [192]:
type(imts[0])
Out[192]:
In [193]:
sitecol = readinput.get_site_collection(oqparam); sitecol
Out[193]:
In [194]:
list(sitecol)
Out[194]:
In [195]:
from openquake.hazardlib.calc.gmf import ground_motion_fields
In [196]:
ground_motion_fields?
In [197]:
ground_motion_fields(rupture, sitecol, imts, gsim, oqparam.truncation_level,
oqparam.number_of_ground_motion_fields,
correlation_model=readinput.get_correl_model(oqparam),
seed=oqparam.random_seed)
Out[197]:
In [198]:
oqp = readinput.get_oqparam('job_damage.ini')
for name, value in oqp:
print name, value
In [199]:
exposure = readinput.get_exposure(oqp); exposure
Out[199]:
In [200]:
a1 = exposure.assets[0]
In [201]:
a1.number
Out[201]:
In [202]:
a1.location
Out[202]:
In [203]:
help(readinput.get_exposure)
In [204]:
sitecol, assets_by_site = readinput.get_sitecol_assets(oqp, exposure)
sitecol, assets_by_site
Out[204]:
In [205]:
risk_model = readinput.get_risk_model(oqp); risk_model
Out[205]:
In [206]:
risk_model.keys()
Out[206]:
In [207]:
workflow = risk_model['PGA', 'RM']; workflow
Out[207]:
In [208]:
workflow.risk_functions
Out[208]:
In [209]:
print open('fragility_model.xml').read()
In [210]:
workflow.risk_functions['damage'][0], workflow.risk_functions['damage'][1]
Out[210]:
In [211]:
risk_model.damage_states
Out[211]:
In [212]:
?workflow
In [213]:
oqr = readinput.get_oqparam('job_risk.ini')
rm = readinput.get_risk_model(oqr)
rm.keys()
Out[213]:
In [214]:
rm['SA(0.2)', 'RC'].risk_functions
Out[214]:
In [215]:
from openquake.commonlib import readinput
usparam = readinput.get_oqparam('job_usa.ini')
sitecol = readinput.get_site_collection(usparam)
In [216]:
source_models = list(readinput.get_composite_source_model(usparam, sitecol)) # slow
source_models
Out[216]:
In [217]:
trt_model = source_models[0].trt_models[0]
trt_model.min_mag, trt_model.max_mag, trt_model.num_ruptures
Out[217]:
In [218]:
trt_model.sources[:3], trt_model.sources[-3:]
Out[218]:
In [219]:
list(trt_model.sources[0].iter_ruptures())
Out[219]:
In [220]:
src = trt_model.sources[0]
src.mfd
Out[220]:
In [221]:
o = readinput.get_oqparam('job_gmvs_from_csv.ini')
readinput.get_sitecol_gmfs(o)
Out[221]:
In [222]:
o = readinput.get_oqparam('job_hc_from_csv.ini')
readinput.get_sitecol_hcurves(o)
Out[222]:
In [223]:
from openquake.commonlib.calculators import base
In [224]:
HelloCalculator = base.calculators['hello']; HelloCalculator
Out[224]:
In [225]:
print open('hello.ini').read()
oqp = readinput.get_oqparam('hello.ini')
In [226]:
from openquake.commonlib.parallel import PerformanceMonitor
calc = HelloCalculator(oqp, PerformanceMonitor('hello'))
In [227]:
calc.run()
Out[227]:
In the export_dir there will be a file performance.csv with some interesting information about time spent and memory allocated
In [228]:
from hello_test import HelloTestCase
HelloTestCase??
===================================================================================================================================
Example: building a frequency hystogram
In [229]:
from collections import Counter
In [230]:
Counter('pippolippo')
Out[230]:
In [231]:
def frequencyhisto(fnames):
"Compute the character frequency hystogram of a set of files"
c = Counter()
for fname in fnames:
c += Counter(open(fname).read().upper())
return c
In [232]:
from openquake.commonlib import nrml_examples
In [233]:
DIR = nrml_examples.__path__[0]
In [234]:
DIR
Out[234]:
In [235]:
import os; xmlfiles = [os.path.join(DIR, f) for f in os.listdir(DIR) if f.endswith('.xml')]; xmlfiles
Out[235]:
In [236]:
len(xmlfiles)
Out[236]:
In [237]:
apply(frequencyhisto, (xmlfiles,))
Out[237]:
In [238]:
from openquake.commonlib.parallel import apply_reduce
import operator
In [239]:
apply_reduce(frequencyhisto, (xmlfiles,), agg=operator.add, acc=Counter(), concurrent_tasks=4)
Out[239]:
In [240]:
[len(chunk) for chunk in apply_reduce._chunks]
Out[240]:
In [241]:
apply_reduce(frequencyhisto, (xmlfiles,), agg=operator.add, acc=Counter(), concurrent_tasks=4,
weight=os.path.getsize)
Out[241]:
In [242]:
[chunk.weight for chunk in apply_reduce._chunks]
Out[242]:
In [243]:
[len(chunk) for chunk in apply_reduce._chunks]
Out[243]:
In [244]:
apply_reduce._chunks[0]
Out[244]:
In [245]:
from openquake.baselib.general import split_in_blocks
In [246]:
split_in_blocks??
In [247]:
from openquake.baselib.general import AccumDict
AccumDict??
In [248]:
acc = AccumDict()
acc
Out[248]:
In [249]:
acc2 = acc + {'a': 1}
In [250]:
acc3 = acc2 + {'a': 1}
In [251]:
acc3
Out[251]:
In [252]:
acc4 = acc3 + {'b': 0}
acc4
Out[252]:
In [253]:
from my_calculators import scenario
scenario??
In [254]:
from openquake.commonlib.calculators.hazard import ScenarioCalculator
In [255]:
ScenarioCalculator??
In [256]:
from openquake.commonlib.parallel import PerformanceMonitor
PerformanceMonitor?
In [257]:
from openquake.commonlib import readinput
from openquake.commonlib.calculators.calc import calc_gmfs
In [258]:
o = readinput.get_oqparam('job_damage.ini')
exposure = readinput.get_exposure(o)
sitecol, assets_by_site = readinput.get_sitecol_assets(o, exposure)
risk_model = readinput.get_risk_model(o)
gmfs_by_imt = calc_gmfs(o, sitecol)
In [259]:
ri = risk_model.build_input('PGA', gmfs_by_imt['PGA'], assets_by_site)
ri
Out[259]:
In [260]:
assets, hazards, epsilons = ri.get_all()
print assets
print hazards
print epsilons
In [261]:
from openquake.risklib.riskinput import RiskInput; RiskInput
Out[261]: