<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yambo-code.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Parse_qp.py</id>
	<title>Parse qp.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yambo-code.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Parse_qp.py"/>
	<link rel="alternate" type="text/html" href="https://wiki.yambo-code.eu/wiki/index.php?title=Parse_qp.py&amp;action=history"/>
	<updated>2026-04-04T07:53:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://wiki.yambo-code.eu/wiki/index.php?title=Parse_qp.py&amp;diff=3489&amp;oldid=prev</id>
		<title>Conor: Created page with &quot;Save the following text into a file called &#039;&#039;&#039;parse_qp.py&#039;&#039;&#039; &lt;pre&gt; #! /usr/bin/env python3 import sys  def parse_report(file_qp):    #    outl=[]    outd={}    fl=open(file_qp...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.yambo-code.eu/wiki/index.php?title=Parse_qp.py&amp;diff=3489&amp;oldid=prev"/>
		<updated>2020-01-21T14:41:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Save the following text into a file called &amp;#039;&amp;#039;&amp;#039;parse_qp.py&amp;#039;&amp;#039;&amp;#039; &amp;lt;pre&amp;gt; #! /usr/bin/env python3 import sys  def parse_report(file_qp):    #    outl=[]    outd={}    fl=open(file_qp...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Save the following text into a file called &amp;#039;&amp;#039;&amp;#039;parse_qp.py&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /usr/bin/env python3&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def parse_report(file_qp):&lt;br /&gt;
   #&lt;br /&gt;
   outl=[]&lt;br /&gt;
   outd={}&lt;br /&gt;
   fl=open(file_qp,&amp;quot;r&amp;quot;)&lt;br /&gt;
   #&lt;br /&gt;
   for line in fl:&lt;br /&gt;
     #&lt;br /&gt;
     if &amp;quot;#  X G`s&amp;quot; in line:&lt;br /&gt;
        outd[&amp;quot;X_gvect&amp;quot;]=int(line.split()[-1])&lt;br /&gt;
     if &amp;quot;#  X bands&amp;quot; in line:&lt;br /&gt;
        outd[&amp;quot;X_bands&amp;quot;]=int(line.split()[-1])&lt;br /&gt;
     if &amp;quot;#  Sc/G bands&amp;quot; in line:&lt;br /&gt;
        outd[&amp;quot;G_bands&amp;quot;]=int(line.split()[-1])&lt;br /&gt;
     if &amp;quot;#&amp;quot; in line: continue&lt;br /&gt;
     if len(line) == 0: continue&lt;br /&gt;
     s=line.split()&lt;br /&gt;
     if len(s) != 5 : continue&lt;br /&gt;
&lt;br /&gt;
     data=[float(s[0]),float(s[1]),float(s[2]),float(s[3])]&lt;br /&gt;
     outl.append(data)&lt;br /&gt;
     outd[&amp;quot;qp_list&amp;quot;]=outl&lt;br /&gt;
&lt;br /&gt;
   fl.close()&lt;br /&gt;
   return outd&lt;br /&gt;
&lt;br /&gt;
def formatter(val,maxfield=12):&lt;br /&gt;
    sval=str(val)&lt;br /&gt;
    return &amp;quot; &amp;quot;*(maxfield-len(sval))+sval&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_qp_data(outd=None,val=None):&lt;br /&gt;
    if outd == None:&lt;br /&gt;
       strout =  formatter(&amp;quot;# Xo_gvect&amp;quot;)&lt;br /&gt;
       strout += formatter(&amp;quot;Xo_nbnd&amp;quot;)&lt;br /&gt;
       strout += formatter(&amp;quot;G_nbnd&amp;quot;)&lt;br /&gt;
       strout += formatter(&amp;quot;Egap [eV]&amp;quot;)&lt;br /&gt;
       print(strout)&lt;br /&gt;
       return&lt;br /&gt;
&lt;br /&gt;
    outl=outd[&amp;quot;qp_list&amp;quot;]&lt;br /&gt;
    #&lt;br /&gt;
    # determine top of the valence&lt;br /&gt;
    if val==None:&lt;br /&gt;
      for dat in outl:&lt;br /&gt;
         if dat[2] == 0.0:&lt;br /&gt;
            val=int(dat[1])&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
    # valence top was not found&lt;br /&gt;
    if val == None: sys.exit(2)&lt;br /&gt;
&lt;br /&gt;
    # compute the gap&lt;br /&gt;
    homo=-10000&lt;br /&gt;
    lumo=+10000&lt;br /&gt;
    for dat in outl:&lt;br /&gt;
       tmp=(dat[2]+dat[3])&lt;br /&gt;
       if (dat[1]==val+1):&lt;br /&gt;
         if (tmp&amp;lt;lumo): lumo=tmp&lt;br /&gt;
       if (dat[1]==val):&lt;br /&gt;
         if (tmp&amp;gt;homo): homo=tmp&lt;br /&gt;
    #&lt;br /&gt;
    egap=lumo-homo&lt;br /&gt;
    egap_str=str(&amp;quot;%10.6f&amp;quot; % egap)&lt;br /&gt;
    #&lt;br /&gt;
    stdout  = formatter(outd[&amp;quot;X_gvect&amp;quot;])&lt;br /&gt;
    stdout += formatter(outd[&amp;quot;X_bands&amp;quot;])&lt;br /&gt;
    stdout += formatter(outd[&amp;quot;G_bands&amp;quot;])&lt;br /&gt;
    stdout += formatter(egap_str)&lt;br /&gt;
    print(stdout)&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
   #&lt;br /&gt;
   usage_str=&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  Usage parse_qp.py  [-h,--help] file_qp1 file_qp2...&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   #&lt;br /&gt;
   if len(argv) == 1:&lt;br /&gt;
     print(usage_str)&lt;br /&gt;
     sys.exit(1)&lt;br /&gt;
   if argv[1]==&amp;quot;-h&amp;quot; or argv[1]==&amp;quot;--help&amp;quot;:&lt;br /&gt;
     print(usage_str)&lt;br /&gt;
     sys.exit(0)&lt;br /&gt;
   #&lt;br /&gt;
   print_qp_data()&lt;br /&gt;
   flist=argv&lt;br /&gt;
   for f in flist[1:]:&lt;br /&gt;
     #&lt;br /&gt;
     outd=parse_report(f)&lt;br /&gt;
     print_qp_data(outd)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   main(sys.argv)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conor</name></author>
	</entry>
</feed>