def dispatch(self, request, **args): current_uri = args["uri"] graph = graphstore.graph() try: iconv = grrm2.Interconversion.get(graph, current_uri) except: return None ctx = {} ctx["steps"] = [] ctx["start"] = ResultInfo() ctx["end"] = ResultInfo() start = grrm2.interconversionStart(iconv).get()[0] ctx["start"].uri = start.uri() ctx["start"].link = "/resources/%7B" + utils.uriToUuid( start.uri()) + "%7D" iconstorage = filestorage.ResourceIcon( start, settings=settings.filestorage_settings) ctx["start"].icon = iconstorage.url(filestorage.ResourceIcon.STATIC) ctx["start"].energy = grrm2.energy(start).get() ctx["start"].label = _getLabel(start) end = grrm2.interconversionEnd(iconv).get()[0] ctx["end"].uri = end.uri() ctx["end"].link = "/resources/%7B" + utils.uriToUuid(end.uri()) + "%7D" iconstorage = filestorage.ResourceIcon( end, settings=settings.filestorage_settings) ctx["end"].icon = iconstorage.url(filestorage.ResourceIcon.STATIC) ctx["end"].energy = grrm2.energy(end).get() ctx["end"].label = _getLabel(end) for s in grrm2.interconversionStep(iconv).getAll(): step = s[0] iconstorage = filestorage.ResourceIcon( step, settings=settings.filestorage_settings) info = StepInfo() info.link = "/resources/%7B" + utils.uriToUuid(step.uri()) + "%7D" info.icon = iconstorage.url(filestorage.ResourceIcon.STATIC) info.uri = step.uri() info.energy = grrm2.energy(step).get() info.number = grrm2.stepNumber(step).get() ctx["steps"].append(info) def cmpFunc(x, y): return cmp(x.number, y.number) ctx["steps"] = sorted(ctx["steps"], cmp=cmpFunc) return ctx
def dispatch(self, request, **args): current_uri = args["uri"] graph = graphstore.graph() try: route = grrm2.Interconversion.get(graph, current_uri) except: return None start = grrm2.interconversionStart(route).get()[0] end = grrm2.interconversionEnd(route).get()[0] iconstorage_start = filestorage.ResourceIcon(start, settings=settings.filestorage_settings) iconstorage_end = filestorage.ResourceIcon(end, settings=settings.filestorage_settings) iconstorage_route = filestorage.ResourceIcon(route, settings=settings.filestorage_settings) ctx = {} ctx["startUrl"] = "/resources/%7B"+utils.uriToUuid(start.uri())+"%7D" ctx["endUrl"] = "/resources/%7B"+utils.uriToUuid(end.uri())+"%7D" ctx["startIcon"] = iconstorage_start.url(filestorage.ResourceIcon.STATIC) ctx["endIcon"] = iconstorage_end.url(filestorage.ResourceIcon.STATIC) ctx["connectionRouteIcon"] = iconstorage_route.url(filestorage.ResourceIcon.ANIMATED) ctx["startStructureLabel"] = _getLabel(start) ctx["endStructureLabel"] = _getLabel(end) energies = {} for step in grrm2.interconversionStep(route).getAll(): step = step[0] energies[grrm2.stepNumber(step).get()] = grrm2.energy(step).get() energies[0] = grrm2.energy(start).get() energies[max(energies.keys())+1] = grrm2.energy(end).get() chart_query = http.QueryDict("").copy() chart_query.update( { "cht": "lxy", "chs": "400x400", "chd": "t:"+",".join([ str(x) for x in energies.keys()])+"|"+",".join( [str(x) for x in energies.values()]), "chds": str(min(energies.keys()))+","+str(max(energies.keys()))+","+str(min(energies.values()))+","+str(max(energies.values())), "chco": "3072F3,ff0000,00aaaa", "chls": "2,4,1", "chf": "bg,s,F0F0FF", "chm": "s,FF0000,0,-1,5|s,0000ff,1,-1,5|s,00aa00,2,-1,5", "chxt": "x,y", "chxr": "0,"+str(min(energies.keys()))+","+str(max(energies.keys()))+"|1,"+str(min(energies.values()))+","+str(max(energies.values())), } ) ctx["chartUrl"] = "http://chart.apis.google.com/chart?"+chart_query.urlencode() return ctx
def _getMoleculeInfo(self, molecule): info = MoleculeInfo() info.icon = filestorage.ResourceIcon( molecule, settings=settings.filestorage_settings).url( filestorage.ResourceIcon.STATIC) info.link = "/resources/%7B" + utils.uriToUuid(molecule.uri()) + "%7D" info.structureLabel = "Unknown" info.isInterconversionStep = False interconversion_step = grrm2.InterconversionStep.tryCast(molecule) icresult = grrm2.InterconversionResult.tryCast(molecule) if interconversion_step: info.isInterconversionStep = True info.structureLabel = "IC - step " + str( grrm2.stepNumber(interconversion_step).get()) elif icresult: struct_number = grrm2.structureNumber(icresult).get() if grrm2.EquilibriumStructure.tryCast(icresult): struct_type = "EQ" elif grrm2.TransitionState.tryCast(icresult): struct_type = "TS" elif grrm2.BarrierlessDissociated.tryCast(icresult): struct_type = "DDC" elif grrm2.BarrierDissociated.tryCast(icresult): struct_type = "UDC" info.structureLabel = struct_type + str(struct_number) return info
def _getFromRoutesContext(self, molecule): icres = grrm2.InterconversionResult.tryCast(molecule) context = [] iconvs = grrm2.interconversionEndOf(icres).getAll() if iconvs is None: return context for iconv in iconvs: iconv = iconv[0] start = grrm2.interconversionStart(iconv).get()[0] route_info = RouteInfo() route_info.link = "/resources/%7B" + utils.uriToUuid( iconv.uri()) + "%7D" route_info.targetLink = "/resources/%7B" + utils.uriToUuid( start.uri()) + "%7D" route_info.targetIcon = filestorage.ResourceIcon( start, settings=settings.filestorage_settings).url( filestorage.ResourceIcon.STATIC) struct_number = grrm2.structureNumber(start).get() if grrm2.EquilibriumStructure.tryCast(start): struct_type = "EQ" elif grrm2.TransitionState.tryCast(start): struct_type = "TS" elif grrm2.BarrierlessDissociated.tryCast(start): struct_type = "DDC" elif grrm2.BarrierDissociated.tryCast(start): struct_type = "UDC" route_info.targetStructureLabel = struct_type + str(struct_number) route_info.targetEnergy = grrm2.energy(start).get() route_info.energyDifference = grrm2.energy( start).get() - grrm2.energy(molecule).get() route_info.icon = filestorage.ResourceIcon( iconv, settings=settings.filestorage_settings).url( filestorage.ResourceIcon.ANIMATED) context.append(route_info) return context
def foo(): end = grrm2.interconversionEnd(route).get()[0] iconstorage_start = filestorage.ResourceIcon( start, settings=settings.filestorage_settings) iconstorage_end = filestorage.ResourceIcon( end, settings=settings.filestorage_settings) iconstorage_route = filestorage.ResourceIcon( route, settings=settings.filestorage_settings) ctx = {} ctx["startUrl"] = "/resources/%7B" + utils.uriToUuid(start.uri()) + "%7D" ctx["endUrl"] = "/resources/%7B" + utils.uriToUuid(end.uri()) + "%7D" ctx["startIcon"] = iconstorage_start.url(filestorage.ResourceIcon.STATIC) ctx["endIcon"] = iconstorage_end.url(filestorage.ResourceIcon.STATIC) ctx["connectionRouteIcon"] = iconstorage_route.url( filestorage.ResourceIcon.ANIMATED) ctx["startStructureLabel"] = _getLabel(start) ctx["endStructureLabel"] = _getLabel(end)
def _getTableData(self,request,uri): try: uris = request.GET.getlist("uris") # page = int(request.POST['page']) # rows_per_page = int(request.POST['rp']) # sortname = request.POST['sortname'] # sortorder = request.POST['sortorder'] except: return http.HttpResponseBadRequest() json_response = {} json_response["rows"] = [] for uri in uris: resclass = ordfm.classByUri(graphstore.graph(),uri) resource = resclass.get(graphstore.graph(),uri) storage = filestorage.ResourceStorage(resource, web_accessible=True, settings=settings.filestorage_settings) iconstorage = filestorage.ResourceIcon(resource, settings=settings.filestorage_settings) row = {} row["icon"] = iconstorage.url(filestorage.ResourceIcon.STATIC) row["animatedicon"] = iconstorage.url(filestorage.ResourceIcon.ANIMATED) row["uri"] = uri row["url"] = utils.resourceUrl(resource) row["type"] = resclass.visibleName() json_response["rows"].append(row) # if page < 0: # return http.HttpResponseBadRequest("Invalid page number") # # graph = graphstore.graph() # c = ordfm.Collection.get(graph, uri) # # json_response = { "page": page, # "total": len(c.contents()), # "rows" : [] # } # # for m_uri in c.contents().values()[(page-1)*rows_per_page:(page-1)*rows_per_page+rows_per_page]: # m = ordfm.Molecule.get(graph, m_uri) # json_response["rows"].append( { "cell" : [ "<span style=\"font-family: Courier\"><a href=\"/molecules/{"+utils.uriToUuid(m_uri)+"}\">"+utils.uriToUuid(m_uri)+"</a></span>", "", m.formula(), str(m.structureType()), str(m.energy()) ] } ) return http.HttpResponse(simplejson.dumps(json_response), mimetype='application/javascript')
def dispatch(self, request, **args): current_uri = args["uri"] graph = graphstore.graph() try: transition_state = grrm2.TransitionState.get(graph, current_uri) except: return None ctx = {} iconv_start_tuple_list = grrm2.interconversionStartOf( transition_state).getAll() or [] iconv_end_tuple_list = grrm2.interconversionEndOf( transition_state).getAll() or [] if len(iconv_start_tuple_list) + len(iconv_end_tuple_list) != 2: return None # we have a problem... a transition state must have two links if len(iconv_start_tuple_list) == 2: iconv_left = iconv_start_tuple_list[0][0] iconv_right = iconv_start_tuple_list[1][0] energies_left = _getEnergies(iconv_left) energies_right = _getEnergies(iconv_right) energies = {} energies[0] = grrm2.energy(transition_state).get() for k, v in sorted(map(lambda x: (-x[0], x[1]), energies_left.items()) + energies_right.items(), key=lambda x: x[0]): print k energies[k] = v end_left = grrm2.interconversionEnd(iconv_left).get()[0] end_right = grrm2.interconversionEnd(iconv_right).get()[0] energies[min(energies.keys()) - 1] = grrm2.energy(end_left).get() energies[max(energies.keys()) + 1] = grrm2.energy(end_right).get() else: return None chart_query = http.QueryDict("").copy() chart_query.update({ "cht": "lxy", "chs": "400x400", "chd": "t:" + ",".join([ str(x[0]) for x in sorted(energies.items(), key=lambda x: x[0]) ]) + "|" + ",".join([ str(x[1]) for x in sorted(energies.items(), key=lambda x: x[0]) ]), "chds": str(min(energies.keys())) + "," + str(max(energies.keys())) + "," + str(min(energies.values())) + "," + str(max(energies.values())), "chco": "3072F3,ff0000,00aaaa", "chls": "2,4,1", "chf": "bg,s,F0F0FF", "chm": "s,FF0000,0,-1,5|s,0000ff,1,-1,5|s,00aa00,2,-1,5", "chxt": "x,y", "chxr": "0," + str(min(energies.keys())) + "," + str(max(energies.keys())) + "|1," + str(min(energies.values())) + "," + str(max(energies.values())), }) ctx["chartUrl"] = "http://chart.apis.google.com/chart?" + chart_query.urlencode( ) iconstorage = filestorage.ResourceIcon( transition_state, settings=settings.filestorage_settings) if iconstorage.readable(filestorage.ResourceIcon.STATIC): icon_url = iconstorage.url(filestorage.ResourceIcon.STATIC) elif iconstorage.readable(filestorage.ResourceIcon.ANIMATED): icon_url = iconstorage.url(filestorage.ResourceIcon.ANIMATED) else: icon_url = None ctx["transitionStateIcon"] = icon_url iconstorage = filestorage.ResourceIcon( end_left, settings=settings.filestorage_settings) if iconstorage.readable(filestorage.ResourceIcon.STATIC): icon_url = iconstorage.url(filestorage.ResourceIcon.STATIC) elif iconstorage.readable(filestorage.ResourceIcon.ANIMATED): icon_url = iconstorage.url(filestorage.ResourceIcon.ANIMATED) else: icon_url = None ctx["leftEndIcon"] = icon_url iconstorage = filestorage.ResourceIcon( end_right, settings=settings.filestorage_settings) if iconstorage.readable(filestorage.ResourceIcon.STATIC): icon_url = iconstorage.url(filestorage.ResourceIcon.STATIC) elif iconstorage.readable(filestorage.ResourceIcon.ANIMATED): icon_url = iconstorage.url(filestorage.ResourceIcon.ANIMATED) else: icon_url = None ctx["rightEndIcon"] = icon_url ctx["leftEndUrl"] = "/resources/%7B" + utils.uriToUuid( end_left.uri()) + "%7D" ctx["rightEndUrl"] = "/resources/%7B" + utils.uriToUuid( end_right.uri()) + "%7D" return ctx
print str(__file__) + " : Unable to convert to uri " + str( resource_uuid) + " " + e.message raise http.Http404() graph = graphstore.graph() try: thing = grrm2.Thing.get(graph, resource_uri) except: log.info(str(__file__) + " : not found " + str(resource_uri)) raise http.Http404 if not thing: log.info(str(__file__) + " : not found " + str(resource_uri)) raise http.Http404 iconstorage = filestorage.ResourceIcon( thing, settings=settings.filestorage_settings) if iconstorage.readable(filestorage.ResourceIcon.STATIC): icon_url = iconstorage.url(filestorage.ResourceIcon.STATIC) elif iconstorage.readable(filestorage.ResourceIcon.ANIMATED): icon_url = iconstorage.url(filestorage.ResourceIcon.ANIMATED) else: icon_url = None resource_type = None if grrm2.Run.tryCast(thing): resource_type = "Run" elif grrm2.TransitionState.tryCast(thing): resource_type = "TransitionState" elif grrm2.EquilibriumStructure.tryCast(thing): resource_type = "EquilibriumStructure" elif grrm2.BarrierDissociated.tryCast(thing):