Source code for PyMca5.PyMcaPhysics.xrf.ElementHtml

#/*##########################################################################
#
# The PyMca X-Ray Fluorescence Toolkit
#
# Copyright (c) 2004-2014 European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
#############################################################################*/
__author__ = "V.A. Sole - ESRF Data Analysis"
__contact__ = "sole@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
from . import Elements

[docs]class ElementHtml(object): def __init__(self,element=None): self.element = None
[docs] def gethtml(self,element=None): if element is None:element = self.element if element is None:return "" ele = element #text="<center><b><font color=red size=5>Summary</font></b></center>" text="" if ele not in Elements.Element.keys(): text+="<br><b><font color=blue size=4>Unknown Element</font></b>" return text symbol = Elements.getsymbol(Elements.getz(ele)) omegak = Elements.Element[ele]['omegak'] omegal = [ Elements.Element[ele]['omegal1'], Elements.Element[ele]['omegal2'], Elements.Element[ele]['omegal3'] ] omegam = [ Elements.Element[ele]['omegam1'], Elements.Element[ele]['omegam2'], Elements.Element[ele]['omegam3'], Elements.Element[ele]['omegam4'], Elements.Element[ele]['omegam5'] ] #text+="<center> text+="<br><b><font color=blue size=4>Element Info</font></b>" #text+="</center>" if 0: text+="<br><b><font size=3>Name = %s</font></b>" % Elements.Element[ele]['name'] text+="<br><b><font size=3>Symbol = %s</font></b>" % symbol text+="<br><b><font size=3>At. Number = %d</font></b>" % Elements.Element[ele]['Z'] text+="<br><b><font size=3>At. Weight = %.5f</font></b>" % Elements.Element[ele]['mass'] text+="<br><b><font size=3>Density = %.5f</font></b>" % Elements.Element[ele]['density'] else: hcolor = 'white' finalcolor = 'white' text+="<nobr><table>" #symbol text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>Symbol</font></b>" text+="</td>" text+='<td align="center" bgcolor="%s">' % finalcolor text+="<b><font size=3>=</font></b>" text+="</td>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%s </font></b>" % symbol text+="</td>" #Z text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>At. Number</font></b>" text+="</td>" text+='<td align="center" bgcolor="%s">' % finalcolor text+="<b><font size=3>=</font></b>" text+="</td>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%d </font></b>" % Elements.Element[ele]['Z'] text+="</td>" #name text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>Name</font></b>" text+="</td>" text+='<td align="center" bgcolor="%s">' % finalcolor text+="<b><font size=3>=</font></b>" text+="</td>" text+='<td align="left" bgcolor="%s">' % finalcolor name = Elements.Element[ele]['name'][0].upper()+Elements.Element[ele]['name'][1:] text+="<b><font size=3>%s </font></b>" % name text+="</td>" #mass text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>At. Weight</font></b>" text+="</td>" text+='<td align="center" bgcolor="%s">' % finalcolor text+="<b><font size=3>=</font></b>" text+="</td>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.5f </font></b>" % Elements.Element[ele]['mass'] text+="</td>" #density text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>Density</font></b>" text+="</td>" text+='<td align="center" bgcolor="%s">' % finalcolor text+="<b><font size=3>=</font></b>" text+="</td>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.5f g/cm3</font></b>" % Elements.Element[ele]['density'] text+="</td>" text+="</tr>" text+="</table>" # Shell propierties hcolor = 'white' finalcolor = 'white' if Elements.Element[ele]['Z'] > 2: text+="<br><b><font color=blue size=4>Fluorescence Yields</font></b>" text+="<nobr><table><tr>" text+='<td align="left" bgcolor="%s"><b>' % hcolor text+='Shell' text+="</b></td>" text+='<td align="right" bgcolor="%s"><b>' % hcolor text+='Yield' text+="</b></td>" text+="</tr>" text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%s </font></b>" % "K" text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.3e </font></b>" % omegak text+="</td>" for i in range(len(omegal)): if omegal[i] > 0.0: text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>L%d </font></b>" % (i+1) text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.3e </font></b>" % omegal[i] text+="</td>" for i in range(len(omegam)): if omegam[i] > 0.0: text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>M%d </font></b>" % (i+1) text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.3e </font></b>" % omegam[i] text+="</td>" text+="</tr>" text+="</table>" hcolor = 'white' finalcolor = 'white' f = ['f12','f13','f23'] ck = [] doit = 0 for item in f: value = Elements.Element[ele]['CosterKronig']['L'][item] if value > 0:doit=1 ck.append(value) if doit: text+="<br><b><font color=blue size=4>L-Shell Coster-Kronig</font></b>" text+="<nobr><table><tr>" for item in f: text+='<td align="left" bgcolor="%s"><b>' % hcolor text+=item text+="</b></td>" text+="</tr>" text+="<tr>" for i in range(len(f)): text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.3f </font></b>" % ck[i] text+="</td>" text+="</tr>" text+="</table>" #M shell fs = [[ 'f12', 'f13', 'f14', 'f15'], ['f23', 'f24', 'f25'], ['f34', 'f35'], ['f45']] doit = 0 for f in fs: for item in f: value = Elements.Element[ele]['CosterKronig']['M'][item] if value > 0:doit=1 if doit: text+="<br><b><font color=blue size=4>M-Shell Coster-Kronig</font></b>" text+="<nobr><table>" for f in fs: text+="<tr>" for item in f: text+='<td align="left" bgcolor="%s"><b>' % hcolor text+=item text+="</b></td>" text+="</tr>" text+="<tr>" for item in f: text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.3f </font></b>" % Elements.Element[ele]['CosterKronig']['M'][item] text+="</td>" text+="</tr>" text+="</table>" hcolor = 'white' finalcolor = 'white' for rays in Elements.Element[ele]['rays']: if rays == "Ka xrays":continue if rays == "Kb xrays":continue #text+="<center>" text+="<br><b><font color=blue size=4>%s Emission Energies</font></b>" % rays[0:-1] #text+="</center>" if 0: for transition in Elements.Element[ele][rays]: text+="<br><b><font size=3>%s energy = %.5f rate = %.5f</font></b>" % (transition,Elements.Element[ele][transition]['energy'], Elements.Element[ele][transition]['rate']) else: text+="<nobr><table><tr>" text+='<td align="left" bgcolor="%s"><b>' % hcolor text+='Line' text+="</b></td>" text+='<td align="right" bgcolor="%s"><b>' % hcolor text+='Energy (keV)' text+="</b></td>" text+='<td align="right" bgcolor="%s"><b>' % hcolor text+='Rate' text+="</b></td>" text+="</tr>" for transition in Elements.Element[ele][rays]: transitiontext = transition.replace('*','') text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%s </font></b>" % transitiontext text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.5f</font></b>" % Elements.Element[ele][transition]['energy'] text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.5f </font></b>" % Elements.Element[ele][transition]['rate'] text+="</td>" text+="</tr>" text+="</table>" hcolor = 'white' finalcolor = 'white' #text+="<center>" text+="<br><b><font color=blue size=4>%s Binding Energies</font></b>" % "Electron" #text+="</center>" text+="<nobr><table><tr>" text+='<td align="left" bgcolor="%s"><b>' % hcolor text+='Shell' text+="</b></td>" text+='<td align="right" bgcolor="%s"><b>' % hcolor text+='Energy (keV)' text+="</b></td>" text+="</tr>" for shell in Elements.ElementShells: if Elements.Element[ele]['binding'][shell] > 0.0: text+="<tr>" text+='<td align="left" bgcolor="%s">' % finalcolor text+="<b><font size=3>%s </font></b>" % shell text+="</td>" text+='<td align="right" bgcolor="%s">' % finalcolor text+="<b><font size=3>%.5f </font></b>" % Elements.Element[ele]['binding'][shell] text+="</td>" text+="</tr>" text+="</table>" return text
if __name__ == "__main__": import sys from PyMca5 import PyMcaQt as qt app = qt.QApplication(sys.argv) if len(sys.argv) > 1: ele = sys.argv[1] else: ele = "Fe" w= qt.QWidget() l=qt.QVBoxLayout(w) html = ElementHtml() text = qt.QTextEdit(w) text.insertHtml(html.gethtml(ele)) text.setReadOnly(1) l.addWidget(text) w.show() app.exec_()