def _read_td_nutbar_format(self, filename):
     f = open(filename, "r")
     self._skip_comment(f)
     orbs = Orbits()
     while True:
         x = f.tell()
         entry = f.readline().split()
         if (entry[0] == "#"):
             f.seek(x)
             break
         orbs.add_orbit(int(entry[1]), int(entry[2]), int(entry[3]),
                        -int(entry[4]))
     ms = ModelSpace.ModelSpace()
     ms.set_modelspace_from_orbits(orbs)
     self.allocate_density(ms)
     two_body_kets = []
     self._skip_comment(f)
     while True:
         x = f.tell()
         entry = f.readline().split()
         if (len(entry) == 0): break
         two_body_kets.append((int(entry[1]), int(entry[2]), int(entry[3])))
     entry = f.readline().split()
     self.Jbra = float(entry[6])
     self.wflabel_bra = int(entry[7])
     self.Jket = float(entry[8])
     self.wflabel_ket = int(entry[9])
     Jrank = int(float(entry[10]))
     line = f.readline()
     while True:
         x = f.tell()
         entry = f.readline().split()
         if (len(entry) == 0): break
         self.set_1btd(int(entry[0]), int(entry[1]), Jrank, float(entry[2]))
     line = f.readline()
     while True:
         x = f.tell()
         entry = f.readline().split()
         if (len(entry) == 0): break
         a = two_body_kets[int(entry[0])][0]
         b = two_body_kets[int(entry[0])][1]
         Jab = two_body_kets[int(entry[0])][2]
         c = two_body_kets[int(entry[1])][0]
         d = two_body_kets[int(entry[1])][1]
         Jcd = two_body_kets[int(entry[1])][2]
         self.set_2btd_from_indices(a, b, c, d, Jab, Jcd, Jrank,
                                    float(entry[2]))
     print("----------------------------------------")
     print(" read nutbar-format density ")
     print(" < Jf_nf | lambda | Ji_ni > ")
     print(" Ji = {0:6.2f}, ni = {1:3d}".format(self.Jket,
                                                self.wflabel_ket))
     print(" lambda = {0:3d}         ".format(Jrank))
     print(" Jf = {0:6.2f}, nf = {1:3d}".format(self.Jbra,
                                                self.wflabel_bra))
     print("----------------------------------------")
     f.close()
示例#2
0
def loadPickleData(fname):
    AllData = cPickle.load(fname)
    VisData = ModelSpace.aggregateData(AllData)
    return (AllData, VisData)
示例#3
0
from bottle import route, post, run, static_file, template, request

import ModelSpace
import sys
import pickle as cPickle  # name changed

if len(sys.argv) != 2:
    print('Please specify an input pickle file; { uid: user_pickle }')
    sys.exit(1)

AllData = cPickle.load(open(sys.argv[1]))
UserData = ModelSpace.aggregateData(AllData)


@route('/ModelSpace')
def ModelSpace():
    return static_file('ModelSpace.html', root='.')


@post('/ModelSpace/data')
def giveData():
    return {'userdata': UserData}


@route('/ModelSpace/js/<fname:re:[a-zA-z0-9\-\.]+\.js>')
def send_js(fname):
    return static_file(fname, root='./js/', mimetype='application/javascript')


@route('/ModelSpace/css/<fname:re:[a-zA-z0-9\-\.]+\.css>')
def send_css(fname):
    def _read_td_binary(self, filename, byte_order='little'):
        with open(filename, "rb") as fp:
            if (self.ms == None):
                n_orbs = fp.read(4)
                n_orbs = int.from_bytes(n_orbs,
                                        byteorder=byte_order,
                                        signed=True)
                orbs = Orbits()
                for i in range(n_orbs):
                    tmp = []
                    for j in range(4):
                        idx = int.from_bytes(fp.read(4),
                                             byteorder=byte_order,
                                             signed=True)
                        tmp.append(idx)
                    orbs.add_orbit(*tuple(tmp))
                ms = ModelSpace()
                ms.set_modelspace_from_orbits(orbs)
                self.allocate_density(ms)
            else:
                fp.seek(self.ms.orbits.get_num_orbits() * 4 * 4 + 4, 0)

            if (self.bin_header == None):
                n = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                self.bin_header = []
                for i in range(n):
                    J2bra = int.from_bytes(fp.read(4),
                                           byteorder=byte_order,
                                           signed=True)
                    wflabel_bra = int.from_bytes(fp.read(4),
                                                 byteorder=byte_order,
                                                 signed=True)
                    J2ket = int.from_bytes(fp.read(4),
                                           byteorder=byte_order,
                                           signed=True)
                    wflabel_ket = int.from_bytes(fp.read(4),
                                                 byteorder=byte_order,
                                                 signed=True)
                    self.bin_header.append(
                        (J2bra, wflabel_bra, J2ket, wflabel_ket))
            else:
                fp.seek(4 + len(self.bin_header) * 4 * 4, 1)

            try:
                n = self.bin_header.index(
                    (int(self.Jbra * 2), self.wflabel_bra, int(self.Jket * 2),
                     self.wflabel_ket))
            except:
                raise ValueError("Mismatch of J and wf label was detected!")
            for i in range(n):
                n1 = int.from_bytes(fp.read(4),
                                    byteorder=byte_order,
                                    signed=True)
                n2 = int.from_bytes(fp.read(4),
                                    byteorder=byte_order,
                                    signed=True)
                skip_block_size = (n1 * 20) + (n2 * 36)
                fp.seek(skip_block_size, 1)

            bin_parser = []
            n1 = int.from_bytes(fp.read(4), byteorder=byte_order, signed=True)
            n2 = int.from_bytes(fp.read(4), byteorder=byte_order, signed=True)
            arrs = []
            for i in range(n1):
                a = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                b = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                rank = int.from_bytes(fp.read(4),
                                      byteorder=byte_order,
                                      signed=True)
                arrs.append((a, b, rank))
            bin_parser.append(arrs)

            arrs = []
            for i in range(n2):
                a = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                b = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                c = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                d = int.from_bytes(fp.read(4),
                                   byteorder=byte_order,
                                   signed=True)
                Jab = int.from_bytes(fp.read(4),
                                     byteorder=byte_order,
                                     signed=True)
                Jcd = int.from_bytes(fp.read(4),
                                     byteorder=byte_order,
                                     signed=True)
                rank = int.from_bytes(fp.read(4),
                                      byteorder=byte_order,
                                      signed=True)
                arrs.append((a, b, c, d, Jab, Jcd, rank))
            bin_parser.append(arrs)

            for i in range(n1):
                idxs = bin_parser[0][i]
                v = np.frombuffer(fp.read(8), dtype=np.float64)[0]
                self.set_1btd(*idxs, v)
            for i in range(n2):
                idxs = bin_parser[1][i]
                v = np.frombuffer(fp.read(8), dtype=np.float64)[0]
                self.set_2btd_from_indices(*idxs, v)
        return
    def _read_td_kshell_format(self, filename):
        if (not os.path.exists(filename)):
            print("file is not found {}".format(filename))
            return
        f = open(filename, 'r')
        orbs = Orbits()
        flag = True
        for i in range(200):
            line = f.readline()
            if (line[1:12] == "model space"):
                flag = False
                break
        if (flag):
            print("The file {:s} might be crushed. Please check it!".format(
                filename))
            return
        while True:
            entry = f.readline().split()
            if (len(entry) == 0): break
            if (entry[0] == 'k,'): continue
            orbs.add_orbit(int(entry[1]), int(entry[2]), int(entry[3]),
                           int(entry[4]))
        #ms = ModelSpace.ModelSpace()
        ms = ModelSpace()
        ms.set_modelspace_from_orbits(orbs)
        self.allocate_density(ms)

        lines = f.readlines()
        f.close()

        i = 0
        i_obtd = 0
        i_tbtd = 0
        store_obtd = False
        store_tbtd = False
        for line in lines:
            i += 1
            if (not line.startswith("OBTD:")): i_obtd = 0
            if (not line.startswith("TBTD:")): i_tbtd = 0
            if (line.startswith("OBTD:")):
                if (i_obtd == 0):
                    str1 = lines[i - 3]
                    if (str1[0:4] != 'w.f.'):
                        print("see file " + filename + " at line " + str(i))
                    d = str1.split()
                    j2_bra = int(d[2][:-3])
                    j2_ket = int(d[5][:-3])
                    i_bra = int(d[3][:-1])
                    i_ket = int(d[6][:-1])
                    if (j2_bra == int(2 * self.Jbra)
                            and j2_ket == int(2 * self.Jket)
                            and i_bra == self.wflabel_bra
                            and i_ket == self.wflabel_ket):
                        store_obtd = True
                    if (j2_bra != int(2 * self.Jbra)
                            or j2_ket != int(2 * self.Jket)
                            or i_bra != self.wflabel_bra
                            or i_ket != self.wflabel_ket):
                        store_obtd = False
                    if (not store_obtd): i_obtd = -1
                if (store_obtd):
                    data = line.split()
                    a, b, jr, wf_label_bra, wf_label_ket, me = int(data[1]), int(data[2]), int(data[4]), \
                            int(data[6]), int(data[7]), float(data[9])
                    self.set_1btd(a, b, jr, me)
                    i_obtd += 1
                continue
            if (line.startswith("TBTD")):
                if (i_tbtd == 0):
                    str1 = lines[i - 3]
                    if (str1[0:4] != 'w.f.'):
                        print("see file " + filename + " at line " + str(i))
                    d = str1.split()
                    j2_bra = int(d[2][:-3])
                    j2_ket = int(d[5][:-3])
                    i_bra = int(d[3][:-1])
                    i_ket = int(d[6][:-1])
                    if (j2_bra == int(2 * self.Jbra)
                            and j2_ket == int(2 * self.Jket)
                            and i_bra == self.wflabel_bra
                            and i_ket == self.wflabel_ket):
                        store_tbtd = True
                    if (j2_bra != int(2 * self.Jbra)
                            or j2_ket != int(2 * self.Jket)
                            or i_bra != self.wflabel_bra
                            or i_ket != self.wflabel_ket):
                        store_tbtd = False
                    if (not store_tbtd): i_tbtd = -1
                if (store_tbtd):
                    data = line.split()
                    a, b, c, d, Jab, Jcd, Jr, wf_label_bra, wf_label_ket, me = \
                            int(data[1]), int(data[2]), int(data[3]), int(data[4]), \
                            int(data[6]), int(data[7]), int(data[8]), \
                            int(data[10]), int(data[11]), float(data[13])
                    self.set_2btd_from_indices(a, b, c, d, Jab, Jcd, Jr, me)
                    i_tbtd += 1
                continue
示例#6
0
from bottle import route, post, run, static_file, template, request

import ModelSpace
import sys
import pickle as cPickle # name changed

if len(sys.argv) != 2:
    print('Please specify an input pickle file; { uid: user_pickle }')
    sys.exit(1)

AllData = cPickle.load(open(sys.argv[1]))
UserData = ModelSpace.aggregateData(AllData)

@route('/ModelSpace')
def ModelSpace():
    return static_file('ModelSpace.html', root='.')

@post('/ModelSpace/data')
def giveData():
    return {'userdata': UserData}
    
@route('/ModelSpace/js/<fname:re:[a-zA-z0-9\-\.]+\.js>')
def send_js(fname):
    return static_file(fname, root='./js/', mimetype='application/javascript')

@route('/ModelSpace/css/<fname:re:[a-zA-z0-9\-\.]+\.css>')
def send_css(fname):
    return static_file(fname, root='./css/')

@route('/ModelSpace/svg/<fname:re:[a-zA-z0-9\-\.]+\.svg>')
def send_css(fname):