Ejemplo n.º 1
0
def draw(diction, e_homo):
    #for f_dic in FL_sMO_dic:
    for f_dic in diction:
        #print FL_qchem_outf[fid], "MO id and energy:"
        #### change into sorted dictionary: but list of (key, value) tuples
        l_dic=sorted(f_dic.items())     
        nkeys=len(l_dic)
        #### obtain degeneracy in advance
        Degen=1
        ii=0
        for pair in l_dic:
            print pair
            ii+=1
            if ii==1:
                tmp=pair[1]
                d_moe=1
            else:
                if tmp==pair[1]:
                    d_moe+=1
                else:
                    d_moe=1
                    tmp=pair[1]
            if d_moe > Degen:
                Degen=d_moe
        #print FL_qchem_outf[fid], "degeneracy = ", Degen

        #### initialize variables for each file drawing
        tag_draw_beta="NO"
        #### MO level ragne is classified by nfiles
        i=0
        degen_eline=1
        #e_homo=float(FL_homo_ene[fid][0])
        #### for H radical
        if nkeys == 1:
            y=[l_dic[0][1], l_dic[0][1]]
            f_draw(1, x_3kinds[0], y, e_homo)
            fid+=1
            continue
        temp_ene=TEMP_ENE
        tag_last_draw="NO"

        #if re.search("\*", v_ene): # in qchem outfile, 1st low number might be ******
        #### When use dictionary, be needed to sort keys 
        for tup in l_dic:
            i+=1
            v_ene=tup[1]
            if print_draw:
                print v_ene
            if temp_ene==TEMP_ENE:         # for initial energy value, just save 
                temp_ene=v_ene
                continue
            #### draw the previous energy y
            y=[temp_ene, temp_ene]
            #### if energies are same, increase multi degeneracy 
            if temp_ene == v_ene:
                degen_eline += 1
                ### if not last energy
                if i != nkeys:
                    continue
                ### draw 3 plots if last ene and finish
                else:
                    f_draw(degen_eline, Xrange_nf(nfile, fid, degen_eline,0), y, e_homo)
                #print "finish drawing"
            ### if energies are different 
            else:
                ### draw 3 kind of plots with degeneracy for previous energies
                if degen_eline > 4:
                    print "ERROR:: so many degeneracy in drawing"
                    exit(10)
                #print "degen_eline = ", degen_eline
                #print Xrange_nf(nfile, fid, degen_eline,0), y
                f_draw(degen_eline, Xrange_nf(nfile, fid, degen_eline,0), y, e_homo)
                # if last ene and no degenracy, plot additional energy
                if i == nkeys:
                    y=[v_ene, v_ene]
                    f_draw(1, Xrange_nf(nfile, fid, 1,0), y, e_homo )
                """
                #### Draw BETA level
                if(temp_ene > v_ene):
                    print "Draw beta spin"
                    print "Beta is not drawing"
                    print temp_ene, v_ene
                    tag_draw_beta="YES"
                    e_homo=float(FL_homo_ene[fid][1])
                    x_3kinds=x_3kinds_b
                """
            temp_ene=v_ene
            degen_eline = 1
            #### end of one energy value
        #fid+=1
        #### end of energy list
    return
Ejemplo n.º 2
0
        #### end of energy list
    return
fid=0
for f_abMO_dic in FL_abMO_dic_list:
    # draw for alpha
    draw(f_abMO_dic[0], fid, FL_homo_ene[fid], 0)
    if 


        draw(FL_sMO_dic, FL_homo_ene[0][0], fid)


#### draw MPL link line
if nfile == 2:
    i=0
    x=Xrange_nf(2, 0, 1, 0)
    x2=x[1]
    x=Xrange_nf(2, 1, 1, 0)
    x3=x[0]
    xl_link=[x2, x3]
    for pair in MO_link_hl_ene:
        f_draw_link(xl_link, pair)
        i+=1
        

elif nfile == 3:
    i=0
    x=Xrange_nf(3, 0, 1, 0)
    x2=x[1]
    x=Xrange_nf(3, 1, 1, 0)
    x3=x[0]
Ejemplo n.º 3
0
def ab_draw(nfile, fid, beta_tag, ab_tag, diction, e_homo):
    """
    type ab_draw(int, int, int, int, hash(int, float), float)
        sub function: 
    """
    #### change into sorted dictionary: but list of (key, value) tuples
    print "func: ab_draw ", e_homo
    l_dic = sorted(diction.items())
    nkeys = len(l_dic)
    #### obtain degeneracy in advance
    Degen = 1
    ii = 0
    for pair in l_dic:
        print pair
        ii += 1
        if ii == 1:
            tmp = pair[1]
            d_moe = 1
        else:
            if tmp == pair[1]:
                d_moe += 1
            else:
                d_moe = 1
                tmp = pair[1]
        if d_moe > Degen:
            Degen = d_moe
    #print FL_qchem_outf[fid], "degeneracy = ", Degen

    #### initialize variables for each file drawing
    tag_draw_beta = "NO"
    #### MO level ragne is classified by nfiles
    i = 0
    degen_eline = 1
    #e_homo=float(FL_homo_ene[fid][0])
    #### for H radical
    if nkeys == 1:
        y = [l_dic[0][1], l_dic[0][1]]
        f_draw(1, x_3kinds[0], y, e_homo)
        fid += 1
        #continue
    temp_ene = TEMP_ENE
    tag_last_draw = "NO"

    #if re.search("\*", v_ene): # in qchem outfile, 1st low number might be ******
    #### When use dictionary, be needed to sort keys
    for tup in l_dic:
        i += 1
        v_ene = tup[1]
        if print_draw:
            print v_ene
        if temp_ene == TEMP_ENE:  # for initial energy value, just save
            temp_ene = v_ene
            continue
        #### draw the previous energy y
        y = [temp_ene, temp_ene]
        #### if energies are same, increase multi degeneracy
        if temp_ene == v_ene:
            degen_eline += 1
            ### if not last energy
            if i != nkeys:
                continue
            ### draw 3 plots if last ene and finish
            else:
                x_r = Xrange_nf(nfile, fid, beta_tag, ab_tag, degen_eline)
                f_draw(degen_eline, x_r, y, e_homo)
            #print "finish drawing"
        ### Draw if energies are different
        else:
            ### draw 3 kind of plots with degeneracy for previous energies
            if degen_eline > 4:
                print "ERROR:: so many degeneracy in drawing"
                exit(10)
            #print "degen_eline = ", degen_eline
            #print nfile, fid, beta_tag, ab_tag
            x_r = Xrange_nf(nfile, fid, beta_tag, ab_tag, degen_eline)
            #print "ab_tag: ", ab_tag,  x_r
            f_draw(degen_eline, x_r, y, e_homo)
            # if last ene and no degenracy, plot additional energy
            if i == nkeys:
                y = [v_ene, v_ene]
                #print nfile, fid, beta_tag, ab_tag
                #print Xrange_nf(nfile, fid, beta_tag, ab_tag, 1)
                x_r = Xrange_nf(nfile, fid, beta_tag, ab_tag, 1)
                #print x_r
                f_draw(1, x_r, y, e_homo)
        temp_ene = v_ene
        degen_eline = 1
        #### end of one energy value
    #### end of energy list
    return 0
Ejemplo n.º 4
0
    beta_tag = FL_beta_tag[fid]
    if beta_tag == 0:
        ab_draw(nfile, fid, beta_tag, 0, f_abMO_dic[0],
                float(FL_homo_ene[fid][0]))
    else:  # 0 for alpha, 1 for beta
        ab_draw(nfile, fid, beta_tag, 0, f_abMO_dic[0],
                float(FL_homo_ene[fid][0]))
        ab_draw(nfile, fid, beta_tag, 1, f_abMO_dic[1],
                float(FL_homo_ene[fid][1]))
    fid += 1

#### draw MPL link line
if Link_tag:
    if nfile == 2:
        i = 0
        x = Xrange_nf(nfile, 0, 0, 0, 1)
        x2 = x[1]
        x = Xrange_nf(nfile, 1, 0, 0, 1)
        x3 = x[0]
        xl_link = [x2, x3]
        for pair in MO_link_hl_ene:
            f_draw_link(xl_link, pair)
            i += 1

    elif nfile == 3:
        i = 0
        x = Xrange_nf(nfile, 0, 0, 0, 1)
        x2 = x[1]
        x = Xrange_nf(nfile, 1, 0, 0, 1)
        x3 = x[0]
        x4 = x[1]
Ejemplo n.º 5
0
        if print_draw:
            print v_ene
        if temp_ene==TEMP_ENE:         # for initial energy value, just save 
            temp_ene=v_ene
            continue
        #### draw the previous energy y
    	y=[temp_ene, temp_ene]
    	#### if energies are same, increase multi degeneracy 
        if temp_ene == v_ene:
            degen_eline += 1
            ### if not last energy
            if i != nkeys:
                continue
	        ### draw 3 plots if last ene and finish
            else:
                f_draw(degen_eline, Xrange_nf(nfile, fid, degen_eline,0), y, e_homo)
		    #print "finish drawing"
	    ### if energies are different 
        else:
            ### draw 3 kind of plots with degeneracy for previous energies
            if degen_eline > 4:
                print "ERROR:: so many degeneracy in drawing"
                exit(10)
            #print "degen_eline = ", degen_eline
            #print Xrange_nf(nfile, fid, degen_eline,0), y
            f_draw(degen_eline, Xrange_nf(nfile, fid, degen_eline,0), y, e_homo)
            # if last ene and no degenracy, plot additional energy
            if i == nkeys:
                y=[v_ene, v_ene]
                f_draw(1, Xrange_nf(nfile, fid, 1,0), y, e_homo )
            #### Draw BETA level