Exemplo n.º 1
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            from webtzite.models import RegisteredUser
            user = RegisteredUser.objects.get(username=request.user.username)
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(user.api_key,
                                 endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [
                        trace['name'] for trace in contribs['traces']
                    ]
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': msg})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Exemplo n.º 2
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with UWSI2Rester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                contribs = mpr.get_uwsi2_contributions()
                if not contribs:
                    raise Exception('No contributions found for UW/SI2 Explorer!')
                ranges = {}
                for contrib in contribs:
                    df = contrib['table']
                    df.columns = list(df.columns[:-1]) + ['El.']
                    for col in df.columns[:-1]:
                        low, upp = min(df[col]), max(df[col])
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp
                    contrib['table'] = get_backgrid_table(df)
                ranges = jsanitize(ranges)
                contribs = jsanitize(contribs)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("uwsi2_explorer_index.html", locals(), ctx)
Exemplo n.º 3
0
def contribution(request, collection, cid):
    material = {'detail_id': collection[:-1]}
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with MPContribsRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                contrib = mpr.query_contributions(criteria={'_id': cid},
                                                  projection={'build': 1})[0]
                if 'build' in contrib and contrib['build']:
                    mpr.build_contribution(cid)
                    mpr.set_build_flag(cid, False)
                material = mpr.query_contributions(
                    criteria={'_id': ObjectId(cid)},
                    collection=collection,
                    projection={'_id': 0})[0]
            except IndexError:
                mpr.build_contribution(cid)
                material = mpr.query_contributions(
                    criteria={'_id': ObjectId(cid)},
                    collection=collection,
                    projection={'_id': 0})[0]
            material['nb'], material['nb_js'] = export_notebook(
                nbformat.from_dict(material['nb']), cid, separate_script=True)
            ctx.update({'material': jsanitize(material)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("mpcontribs_explorer_contribution.html",
                              locals(), ctx)
Exemplo n.º 4
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            from webtzite.models import RegisteredUser
            user = RegisteredUser.objects.get(username=request.user.username)
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(user.api_key, endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [trace['name'] for trace in contribs['traces']]
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': msg})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Exemplo n.º 5
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            API_KEY = request.user.api_key
            ENDPOINT = request.build_absolute_uri(get_endpoint())
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(API_KEY, endpoint=ENDPOINT) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [trace['name'] for trace in contribs['traces']]
                    mod = os.path.dirname(__file__).split(os.sep)[-2]
                    ctx['static_url'] = '_'.join([STATIC_URL[:-1], mod])
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': 'access restricted to "slac_mose2" user group!'})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Exemplo n.º 6
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DtuRester
        with DtuRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f, map(float, request.POST['{}_slider'.format(f)].split(',')))
                        for f in filters
                    )
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [float(v.split()[0]) for i,v in df[f.replace('_', '##')].iteritems()]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("dtu_explorer_index.html", ctx)
Exemplo n.º 7
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        a_tags = [[], []]
        for mod_path in get_users_modules():
            explorer = os.path.join(mod_path, 'explorer', 'apps.py')
            if os.path.exists(explorer):
                entry = {
                    'name': get_user_explorer_name(explorer),
                    'title': os.path.basename(mod_path).replace('_', ' ')
                }
                mod_path_split = mod_path.split(os.sep)
                rester_path_split = mod_path_split[-4:] + ['rest', 'rester']
                rester_path = os.path.join(*rester_path_split)
                rester_path += '.py'
                idx = 1
                if os.path.exists(rester_path):
                    m = import_module('.'.join(rester_path_split[1:]))
                    UserRester = getattr(m,
                                         get_user_rester(mod_path_split[-1]))
                    endpoint = request.build_absolute_uri(get_endpoint())
                    r = UserRester(request.user.api_key, endpoint=endpoint)
                    idx = int(not r.released)
                a_tags[idx].append(entry)
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("mpcontribs_portal_index.html", locals(), ctx)
Exemplo n.º 8
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DtuRester
        with DtuRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f, map(float, request.POST['{}_slider'.format(f)].split(',')))
                        for f in filters
                    )
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [float(v.split()[0]) for i,v in df[f.replace('_', '##')].iteritems()]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dtu_explorer_index.html", ctx)
Exemplo n.º 9
0
def cif(request, cid, structure_name):
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with MPContribsRester(API_KEY, endpoint=ENDPOINT) as mpr:
            cif = mpr.get_cif(cid, structure_name)
            if cif:
                return HttpResponse(cif, content_type='text/plain')
    return HttpResponse(status=404)
Exemplo n.º 10
0
def tolerance_factors(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated:
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import RedoxThermoCspRester
        with RedoxThermoCspRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                ionic_radii = render_dataframe(mpr.get_ionic_radii(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('webtzite:cas_ng_login'), request.path))
    return render_to_response("redox_thermo_csp_explorer_tolerance_factors.html", ctx.flatten())
Exemplo n.º 11
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with DtuRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                provenance = render_dict(mpr.get_provenance(), webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dtu_explorer_index.html", locals(), ctx)
Exemplo n.º 12
0
def tolerance_factors(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DlrVietenRester
        with DlrVietenRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                ionic_radii = render_dataframe(mpr.get_ionic_radii(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dlr_vieten_explorer_tolerance_factors.html", ctx)
Exemplo n.º 13
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DibbsRester
        with DibbsRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                ctx['title'] = mpr.get_provenance().get('title')
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dibbs_explorer_index.html", ctx)
Exemplo n.º 14
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with MnO2PhaseSelectionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            #provenance = mpr.get_provenance()
            tables = {}
            for phase in mpr.get_phases():
                df = mpr.get_contributions(phase=phase)
                tables[phase] = render_dataframe(df, webapp=True)
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("MnO2_phase_selection_explorer_index.html",
                              locals(), ctx)
Exemplo n.º 15
0
def tolerance_factors(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DlrVietenRester
        with DlrVietenRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                ionic_radii = render_dataframe(mpr.get_ionic_radii(),
                                               webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dlr_vieten_explorer_tolerance_factors.html",
                              locals(), ctx)
Exemplo n.º 16
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['abbreviations'] = render_dict(mpr.get_abbreviations(), webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("perovskites_diffusion_explorer_index.html", ctx)
Exemplo n.º 17
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with SlacMoSe2Rester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                provenance = render_dict(mpr.get_provenance(), webapp=True)
                graphs = {}
                for key, plot in mpr.get_graphs().items():
                    graphs[key] = render_plot(plot, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("slac_mose2_explorer_index.html", locals(), ctx)
Exemplo n.º 18
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from ..rest.rester import DiluteSoluteDiffusionRester
        with DiluteSoluteDiffusionRester(
                user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ranges, contribs = {}, []

                for host in mpr.get_hosts():
                    contrib = {}
                    df = mpr.get_contributions(host)
                    contrib['table'] = render_dataframe(df,
                                                        webapp=True,
                                                        paginate=False)
                    contrib['formula'] = host
                    contrib.update(mpr.get_table_info(host))
                    contrib['short_cid'] = get_short_object_id(contrib['cid'])
                    contribs.append(contrib)

                    for col in df.columns:
                        if col == 'El.':
                            continue
                        low, upp = min(df[col]), max(df[col])
                        if col == 'Z':
                            low -= 1
                            upp += 1
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp

                ctx['ranges'] = dumps(ranges)
                ctx['contribs'] = contribs
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("dilute_solute_diffusion_explorer_index.html",
                              ctx)
Exemplo n.º 19
0
def index(request):
    from webtzite.models import RegisteredUser
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DefectGenomePcfcMaterialsRester
        with DefectGenomePcfcMaterialsRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("defect_genome_pcfc_materials_explorer_index.html", ctx)
Exemplo n.º 20
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['abbreviations'] = render_dict(mpr.get_abbreviations(), webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("perovskites_diffusion_explorer_index.html", ctx)
Exemplo n.º 21
0
def contribution(request, collection, cid):
    material = {}
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with MPContribsRester(API_KEY, endpoint=ENDPOINT) as mpr:
            material = mpr.query_contributions(criteria={'_id': ObjectId(cid)},
                                               collection=collection,
                                               projection={'_id': 0})[0]
            material['nb'], material['nb_js'] = export_notebook(
                nbformat.from_dict(material['nb']),
                cid,
                set_div_names=False,
                separate_script=True)
    material['detail_id'] = collection[:-1]
    ctx = RequestContext(request, {'material': jsanitize(material)})
    return render_to_response("mpcontribs_explorer_contribution.html",
                              locals(), ctx)
Exemplo n.º 22
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DiluteSoluteDiffusionRester
        with DiluteSoluteDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ranges, contribs = {}, []

                for host in mpr.get_hosts():
                    contrib = {}
                    df = mpr.get_contributions(host)
                    contrib['table'] = render_dataframe(df, webapp=True, paginate=False)
                    contrib['formula'] = host
                    contrib.update(mpr.get_table_info(host))
                    contrib['short_cid'] = get_short_object_id(contrib['cid'])
                    contribs.append(contrib)

                    for col in df.columns:
                        if col == 'El.':
                            continue
                        low, upp = min(df[col]), max(df[col])
                        if col == 'Z':
                            low -= 1
                            upp += 1
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp

                ctx['ranges'] = dumps(ranges)
                ctx['contribs'] = contribs
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        ctx['alert'] = 'Please log in!'
    return render_to_response("dilute_solute_diffusion_explorer_index.html", ctx)
Exemplo n.º 23
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import SwfRester
        with SwfRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions()
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("swf_explorer_index.html", ctx)
Exemplo n.º 24
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import SwfRester
        with SwfRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
                mod = os.path.dirname(__file__).split(os.sep)[-2]
                static_url = '_'.join([STATIC_URL[:-1], mod])
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("swf_explorer_index.html", locals(), ctx)
Exemplo n.º 25
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import AlsBeamlineRester
        with AlsBeamlineRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
                for typ in ['XAS', 'XMCD']:
                    html, divid = render_plot(mpr.get_all_spectra(typ), webapp=True)
                    ctx[typ] = {'html': html, 'divid': divid}
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("als_beamline_explorer_index.html", ctx)
Exemplo n.º 26
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                abbreviations = render_dict(mpr.get_abbreviations(),
                                            webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("perovskites_diffusion_explorer_index.html",
                              locals(), ctx)
Exemplo n.º 27
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import BoltztrapRester
        with BoltztrapRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                tables = {}
                for doping in ['n', 'p']:
                    df = mpr.get_contributions(doping=doping)
                    tables[doping] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("boltztrap_explorer_index.html", locals(), ctx)
Exemplo n.º 28
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import SwfRester
        with SwfRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions()
                ctx['table'] = render_dataframe(df, webapp=True)
                mod = os.path.dirname(__file__).split(os.sep)[-2]
                ctx['static_url'] = '_'.join([STATIC_URL[:-1], mod])
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("swf_explorer_index.html", ctx)
Exemplo n.º 29
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import Mno2PhaseSelectionRester
        with Mno2PhaseSelectionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                tables = {}
                for phase in mpr.get_phases():
                    df = mpr.get_contributions(phase=phase)
                    tables[phase] = render_dataframe(df, webapp=True)
                ctx['tables'] = tables
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("MnO2_phase_selection_explorer_index.html", ctx)
Exemplo n.º 30
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import BoltztrapRester
        with BoltztrapRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions(limit=3)
                url = request.build_absolute_uri(request.path) + 'rest/table'
                ctx['table'] = render_dataframe(
                    df, url=url, total_records=mpr.count(), webapp=True
                )
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("boltztrap_explorer_index.html", ctx)
Exemplo n.º 31
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DiluteSoluteDiffusionRester
        with DiluteSoluteDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                contribs = mpr.get_contributions()
                if not contribs:
                    raise Exception(
                        'No contributions found for DiluteSoluteDiffusion Explorer!'
                    )
                ranges = {}
                for contrib in contribs:
                    df = contrib['table']
                    df.columns = [df.columns[0], 'El.'] + list(df.columns[2:])
                    for col in df.columns:
                        if col == 'El.':
                            continue
                        low, upp = min(df[col]), max(df[col])
                        if col == 'Z':
                            low -= 1
                            upp += 1
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp
                    contrib['table'] = get_backgrid_table(df)
                ranges = jsanitize(ranges)
                contribs = jsanitize(contribs)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dilute_solute_diffusion_explorer_index.html",
                              locals(), ctx)
Exemplo n.º 32
0
def index(request):
    ctx = RequestContext(request)
    from webtzite.models import RegisteredUser
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import CarrierTransportRester
        with CarrierTransportRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                ctx['provenance'] = mpr.get_provenance()
                authors = ctx['provenance'].pop('authors').split(', ')
                ctx['provenance']['main_author'] = authors[0]
                ctx['provenance']['etal_authors'] = '<br>'.join(authors[1:])
                df = mpr.get_contributions(limit=3)
                url = request.build_absolute_uri(request.path) + 'rest/table'
                ctx['table'] = render_dataframe(
                    df, url=url, total_records=mpr.count(), webapp=True
                )
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("carrier_transport_explorer_index.html", ctx)
Exemplo n.º 33
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import Mno2PhaseSelectionRester
        with Mno2PhaseSelectionRester(user.api_key,
                                      endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                tables = {}
                for phase in mpr.get_phases():
                    df = mpr.get_contributions(phase=phase)
                    tables[phase] = render_dataframe(df, webapp=True)
                ctx['tables'] = tables
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("MnO2_phase_selection_explorer_index.html", ctx)
Exemplo n.º 34
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DtuRester
        with DtuRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f,
                         map(float, request.POST['{}_slider'.format(f)].split(
                             ','))) for f in filters)
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [
                            float(v.split()[0])
                            for i, v in df[f.replace('_', '##')].iteritems()
                        ]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("dtu_explorer_index.html", ctx)
Exemplo n.º 35
0
def isographs(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated:
        user = RegisteredUser.objects.get(username=request.user.username)
        if user.groups.filter(name='redox_thermo_csp').exists():
            from ..rest.rester import RedoxThermoCspRester
            with RedoxThermoCspRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)
                    df = mpr.get_contributions()
                    url = request.build_absolute_uri(request.path) + 'rest/table'
                    ctx['table'] = render_dataframe(
                        df, webapp=True,
                        #url=url, total_records=mpr.count()
                    )
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': access_msg})
    else:
        return redirect('{}?next={}'.format(reverse('webtzite:cas_ng_login'), request.path))
    return render_to_response("redox_thermo_csp_explorer_isographs.html", ctx.flatten())
Exemplo n.º 36
0
def index(request):
    from webtzite.models import RegisteredUser
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import AlsBeamlineRester
        with AlsBeamlineRester(user.api_key,
                               endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(),
                                                webapp=True)
                for typ in ['XAS', 'XMCD']:
                    html, divid = render_plot(mpr.get_all_spectra(typ),
                                              webapp=True)
                    ctx[typ] = {'html': html, 'divid': divid}
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("als_beamline_explorer_index.html", ctx)
Exemplo n.º 37
0
def index(request):
    ctx = RequestContext(request)
    fields = ['identifiers', 'projects', 'cids']
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with MPContribsRester(API_KEY, endpoint=ENDPOINT) as mpr:

            if request.method == 'GET':
                options = dict((field, set()) for field in fields)
                docs = mpr.query_contributions()
                if docs:
                    for doc in docs:
                        options[fields[0]].add(str(doc['mp_cat_id']))
                        options[fields[1]].add(str(doc['project']))
                        options[fields[2]].add(str(doc['_id']))
                else:
                    ctx.update({'alert': 'No contributions available!'})
                options = dict((k, list(v)) for k, v in options.iteritems())
                selection = dict((field, []) for field in fields)

            elif request.method == 'POST':
                projection_keys = ['mp_cat_id', 'project']
                options, selection = (dict((field, [
                    str(el) for el in json.loads(request.POST['_'.join(
                        [prefix, field])])
                ]) for field in fields) for prefix in ['options', 'selection'])
                mode = request.POST['submit']
                if mode == 'Find':
                    criteria = {}
                    for idx, key in enumerate(projection_keys):
                        if selection[fields[idx]]:
                            criteria.update(
                                {key: {
                                    '$in': selection[fields[idx]]
                                }})
                    #if criteria.keys() == [projection_keys[0]]:
                    #    # only identifier(s) selected: contribution cards
                    #    main_contributions = {}
                    #    for identifier in selection[fields[0]]:
                    #        main_contributions[identifier] = mpr.get_main_contributions(identifier)
                    #else:
                    docs = mpr.query_contributions(criteria=criteria)
                    urls = [mpr.get_card(doc['_id']) for doc in docs]
                elif mode == 'Show':
                    if selection[fields[2]]:
                        docs = mpr.query_contributions(criteria={
                            '_id': {
                                '$in': map(ObjectId, selection[fields[2]])
                            }
                        })
                        urls = []
                        for doc in docs:
                            urls.append(['', ''])
                            urls[-1][0] = '/'.join(
                                [request.path, str(doc['_id'])])
                            #urls[-1][1] = mpr.get_card(doc['_id'])
                    else:
                        ctx.update(
                            {'alert': 'Enter a contribution identifier!'})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("mpcontribs_explorer_index.html", locals(), ctx)
Exemplo n.º 38
0
def index(request, collection='materials'):
    ctx = RequestContext(request)
    fields = ['identifiers', 'projects', 'cids']
    if request.user.is_authenticated():
        if collection in ['materials', 'compositions']:
            API_KEY = request.user.api_key
            ENDPOINT = request.build_absolute_uri(get_endpoint())
            with MPContribsRester(API_KEY, endpoint=ENDPOINT) as mpr:
                if request.method == 'GET':
                    options = dict((field, set()) for field in fields)
                    docs = mpr.query_contributions(collection=collection,
                                                   projection={'nb': 0})
                    if docs:
                        for doc in docs:
                            options[fields[0]].add(str(doc['mp_cat_id']))
                            options[fields[1]].add(str(doc['project']))
                            options[fields[2]].add(str(doc['_id']))
                    else:
                        ctx.update(
                            {'alert': 'No {} available!'.format(collection)})
                    options = dict(
                        (k, list(v)) for k, v in options.iteritems())
                    selection = dict((field, []) for field in fields)
                elif request.method == 'POST':
                    projection_keys = ['mp_cat_id', 'project']
                    options, selection = (
                        dict((field,
                              [
                                  str(el) for el in json.loads(request.POST[
                                      '_'.join([prefix, field])])
                              ]) for field in fields)
                        for prefix in ['options', 'selection'])
                    mode = request.POST['submit']
                    if mode == 'Find':
                        criteria = {}
                        for idx, key in enumerate(projection_keys):
                            if selection[fields[idx]]:
                                criteria.update(
                                    {key: {
                                        '$in': selection[fields[idx]]
                                    }})
                        docs = mpr.query_contributions(
                            criteria=criteria, collection='contributions')
                        urls = [
                            '/'.join([request.path,
                                      str(doc['_id'])]) for doc in docs
                        ]
                    elif mode == 'Show':
                        if selection[fields[2]]:
                            docs = mpr.query_contributions(
                                criteria={
                                    '_id': {
                                        '$in': map(ObjectId,
                                                   selection[fields[2]])
                                    }
                                },
                                collection='contributions')
                            urls = [
                                '/'.join([request.path,
                                          str(doc['_id'])]) for doc in docs
                            ]
                        else:
                            ctx.update(
                                {'alert': 'Enter a contribution identifier!'})
        else:
            ctx.update(
                {'alert': 'Collection {} does not exist!'.format(collection)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("mpcontribs_explorer_index.html", locals(), ctx)