Пример #1
0
    def _load(self, filename):
        fn = context.get_fn(filename)
        members = []
        with open(fn) as f:
            state = 0
            for line in f:
                line = line[:line.find('#')].strip()
                if len(line) > 0:
                    if state == 0:
                        # read element number
                        words = line.split()
                        number = int(words[0])
                        if len(words) > 1:
                            pseudo_number = int(words[1])
                        else:
                            pseudo_number = number
                        state = 1
                    elif state == 1:
                        # read rtf string
                        rtf = RTransform.from_string(line)
                        state = 2
                    elif state == 2:
                        nlls = np.array([int(w) for w in line.split()])
                        state = 0
                        members.append(
                            (number, pseudo_number, RadialGrid(rtf), nlls))

        self._init_members_from_list(members)
Пример #2
0
 def from_hdf5(cls, grp, lf):
     records = []
     for ds in grp.itervalues():
         rtransform = RTransform.from_string(ds.attrs['rtransform'])
         records.append((ds.attrs['number'], ds.attrs['pseudo_number'],
                         RadialGrid(rtransform), ds[:]))
     return AtomicGridSpec(records)
Пример #3
0
    def _load(self, filename):
        fn = context.get_fn(filename)
        members = []
        with open(fn) as f:
            state = 0
            for line in f:
                line = line[:line.find('#')].strip()
                if len(line) > 0:
                    if state == 0:
                        # read element number
                        words = line.split()
                        number = int(words[0])
                        if len(words) > 1:
                            pseudo_number = int(words[1])
                        else:
                            pseudo_number = number
                        state = 1
                    elif state == 1:
                        # read rtf string
                        rtf = RTransform.from_string(line)
                        state = 2
                    elif state == 2:
                        nlls = np.array([int(w) for w in line.split()])
                        state = 0
                        members.append((number, pseudo_number, RadialGrid(rtf), nlls))

        self._init_members_from_list(members)
Пример #4
0
 def from_hdf5(cls, grp):
     records = []
     for ds in grp.itervalues():
         rtransform = RTransform.from_string(ds.attrs['rtransform'])
         records.append((
             ds.attrs['number'], ds.attrs['pseudo_number'],
             RadialGrid(rtransform), ds[:]
         ))
     return AtomicGridSpec(records)
Пример #5
0
def load_proatom_records_h5_group(f):
    '''Load proatom records from the given HDF5 group'''
    records = []
    for grp in f.itervalues():
        assert isinstance(grp, h5.Group)
        if 'deriv' in grp:
            deriv = grp['deriv'][:]
        else:
            deriv = None
        records.append(ProAtomRecord(
            number=grp.attrs['number'],
            charge=grp.attrs['charge'],
            energy=grp.attrs['energy'],
            rgrid=RadialGrid(RTransform.from_string(grp.attrs['rtransform'])),
            rho=grp['rho'][:],
            deriv=deriv,
            pseudo_number=grp.attrs.get('pseudo_number'),
            ipot_energy=grp.attrs.get('ipot_energy'),
        ))
    return records