예제 #1
0
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model grp_id trt eff_ruptures tot_ruptures'.split())
    num_trts = 0
    eff_ruptures = 0
    tot_ruptures = 0
    csm_info = dstore['csm_info']
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            if er:
                num_trts += 1
                eff_ruptures += er
                tbl.append(
                    (sm.name, src_group.id, trt, er, src_group.tot_ruptures))
            tot_ruptures += src_group.tot_ruptures
    rows = [('#TRT models', num_trts), ('#eff_ruptures', eff_ruptures),
            ('#tot_ruptures', tot_ruptures),
            ('#tot_weight', csm_info.tot_weight)]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #2
0
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model grp_id trt eff_ruptures tot_ruptures'.split())
    num_trts = 0
    eff_ruptures = 0
    tot_ruptures = 0
    csm_info = dstore['csm_info']
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            if er:
                num_trts += 1
                eff_ruptures += er
                tbl.append(
                    (sm.name, src_group.id, trt, er, src_group.tot_ruptures))
            tot_ruptures += src_group.tot_ruptures
    rows = [('#TRT models', num_trts),
            ('#eff_ruptures', eff_ruptures),
            ('#tot_ruptures', tot_ruptures),
            ('#tot_weight', csm_info.tot_weight)]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #3
0
def export_sourcegroups(ekey, dstore):
    csm_info = dstore['csm_info']
    data = [['grp_id', 'trt', 'eff_ruptures']]
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            data.append((src_group.id, trt, er))
    path = dstore.export_path('sourcegroups.csv')
    writers.write_csv(path, data, fmt='%s')
    return [path]
예제 #4
0
def export_sourcegroups(ekey, dstore):
    csm_info = dstore['csm_info']
    data = [['grp_id', 'trt', 'eff_ruptures']]
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            data.append((src_group.id, trt, er))
    path = dstore.export_path('sourcegroups.csv')
    writers.write_csv(path, data, fmt='%s')
    return [path]
예제 #5
0
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model trt_id trt num_sources '
              'eff_ruptures weight'.split())
    num_trts = 0
    tot_sources = 0
    eff_ruptures = 0
    tot_weight = 0
    source_info = dstore['source_info'].value
    csm_info = dstore['rlzs_assoc'].csm_info
    w = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(r['weight'] for r in rows))
    n = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(1 for r in rows))
    for i, sm in enumerate(csm_info.source_models):
        # NB: the number of effective ruptures per tectonic region model
        # is stored in the array eff_ruptures as a literal string describing
        # an array {trt_model_id: num_ruptures}; see the method
        # CompositionInfo.get_rlzs_assoc
        erdict = ast.literal_eval(csm_info.eff_ruptures[i])
        for trt_model in sm.trt_models:
            trt = source.capitalize(trt_model.trt)
            er = erdict.get(trt, 0)  # effective ruptures
            if er:
                num_trts += 1
                num_sources = n.get(trt_model.id, 0)
                tot_sources += num_sources
                eff_ruptures += er
                weight = w.get(trt_model.id, 0)
                tot_weight += weight
                tbl.append((sm.name, trt_model.id, trt,
                            num_sources, er, weight))
    rows = [('#TRT models', num_trts),
            ('#sources', tot_sources),
            ('#eff_ruptures', eff_ruptures),
            ('filtered_weight', tot_weight)]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #6
0
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model grp_id trt num_sources '
              'eff_ruptures tot_ruptures'.split())
    num_trts = 0
    tot_sources = 0
    eff_ruptures = 0
    tot_ruptures = 0
    source_info = dstore['source_info'].value
    csm_info = dstore['csm_info']
    r = groupby(source_info, operator.itemgetter('grp_id'),
                lambda rows: sum(r['num_ruptures'] for r in rows))
    n = groupby(source_info, operator.itemgetter('grp_id'),
                lambda rows: sum(1 for r in rows))
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            if er:
                num_trts += 1
                num_sources = n.get(src_group.id, 0)
                tot_sources += num_sources
                eff_ruptures += er
                ruptures = r.get(src_group.id, 0)
                tot_ruptures += ruptures
                tbl.append(
                    (sm.name, src_group.id, trt, num_sources, er, ruptures))
    rows = [
        ('#TRT models', num_trts),
        ('#sources', tot_sources),
        ('#eff_ruptures', eff_ruptures),
        ('#tot_ruptures', tot_ruptures),
        ('#tot_weight', csm_info.tot_weight),
    ]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #7
0
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model trt_id trt num_sources '
              'eff_ruptures weight'.split())
    num_trts = 0
    tot_sources = 0
    eff_ruptures = 0
    tot_weight = 0
    source_info = dstore['source_info'].value
    csm_info = dstore['rlzs_assoc'].csm_info
    w = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(r['weight'] for r in rows))
    n = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(1 for r in rows))
    for i, sm in enumerate(csm_info.source_models):
        # NB: the number of effective ruptures per tectonic region model
        # is stored in the array eff_ruptures as a literal string describing
        # an array {trt_model_id: num_ruptures}; see the method
        # CompositionInfo.get_rlzs_assoc
        erdict = ast.literal_eval(csm_info.eff_ruptures[i])
        for trt_model in sm.trt_models:
            trt = source.capitalize(trt_model.trt)
            er = erdict.get(trt, 0)  # effective ruptures
            if er:
                num_trts += 1
                num_sources = n.get(trt_model.id, 0)
                tot_sources += num_sources
                eff_ruptures += er
                weight = w.get(trt_model.id, 0)
                tot_weight += weight
                tbl.append(
                    (sm.name, trt_model.id, trt, num_sources, er, weight))
    rows = [('#TRT models', num_trts), ('#sources', tot_sources),
            ('#eff_ruptures', eff_ruptures), ('filtered_weight', tot_weight)]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #8
0
파일: views.py 프로젝트: rcgee/oq-engine
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model grp_id trt num_sources '
              'eff_ruptures tot_ruptures'.split())
    num_trts = 0
    tot_sources = 0
    eff_ruptures = 0
    tot_ruptures = 0
    source_info = dstore['source_info'].value
    csm_info = dstore['csm_info']
    r = groupby(source_info, operator.itemgetter('grp_id'),
                lambda rows: sum(r['num_ruptures'] for r in rows))
    n = groupby(source_info, operator.itemgetter('grp_id'),
                lambda rows: sum(1 for r in rows))
    for i, sm in enumerate(csm_info.source_models):
        for src_group in sm.src_groups:
            trt = source.capitalize(src_group.trt)
            er = src_group.eff_ruptures
            if er:
                num_trts += 1
                num_sources = n.get(src_group.id, 0)
                tot_sources += num_sources
                eff_ruptures += er
                ruptures = r.get(src_group.id, 0)
                tot_ruptures += ruptures
                tbl.append((sm.name, src_group.id, trt,
                            num_sources, er, ruptures))
    rows = [('#TRT models', num_trts),
            ('#sources', tot_sources),
            ('#eff_ruptures', eff_ruptures),
            ('#tot_ruptures', tot_ruptures),
            ('#tot_weight', csm_info.tot_weight), ]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary
예제 #9
0
파일: views.py 프로젝트: mtahara/oq-engine
def view_ruptures_per_trt(token, dstore):
    tbl = []
    header = ('source_model trt_id trt num_sources '
              'eff_ruptures weight'.split())
    num_trts = 0
    tot_sources = 0
    eff_ruptures = 0
    tot_weight = 0
    source_info = dstore['source_info'].value
    csm_info = dstore['csm_info']
    w = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(r['weight'] for r in rows))
    n = groupby(source_info, operator.itemgetter('trt_model_id'),
                lambda rows: sum(1 for r in rows))
    for i, sm in enumerate(csm_info.source_models):
        for trt_model in sm.trt_models:
            trt = source.capitalize(trt_model.trt)
            er = trt_model.eff_ruptures
            if er:
                num_trts += 1
                num_sources = n.get(trt_model.id, 0)
                tot_sources += num_sources
                eff_ruptures += er
                weight = w.get(trt_model.id, 0)
                tot_weight += weight
                tbl.append((sm.name, trt_model.id, trt,
                            num_sources, er, weight))
    rows = [('#TRT models', num_trts),
            ('#sources', tot_sources),
            ('#eff_ruptures', eff_ruptures),
            ('filtered_weight', tot_weight)]
    if len(tbl) > 1:
        summary = '\n\n' + rst_table(rows)
    else:
        summary = ''
    return rst_table(tbl, header=header) + summary