Source code for seispy.hkpara

from os.path import expanduser
import configparser
import numpy as np
from seispy.utils import check_path, array_instance


[docs] class HKPara(object): def __init__(self): self.rfpath = expanduser('~') self.hkpath = expanduser('~') self.hklist = 'hk.dat' self.hrange = np.arange(20, 80, 0.1) self.krange = np.arange(1.6, 1.9, 0.01) self.vp = 6.3 self.weight = (0.7, 0.2, 0.1) def __str__(self): head = ['{}: {}'.format(k, v) for k, v in self.__dict__.items()] return '\n'.join(head) @property def hrange(self): return self._hrange @hrange.setter def hrange(self, value): if not (array_instance(value) or value is None): raise TypeError('Error type of hrange') else: self._hrange = value @property def krange(self): return self._krange @krange.setter def krange(self, value): if not (array_instance(value) or value is None): raise TypeError('Error type of krange') else: self._krange = value
[docs] def hkpara(cfg_file): hpara = HKPara() cf = configparser.ConfigParser() try: cf.read(cfg_file) except Exception: raise FileNotFoundError('Cannot open configure file %s' % cfg_file) # para for FileIO section hpara.rfpath = check_path('rfpath', cf.get('FileIO', 'rfpath')) hpara.hkpath = cf.get('FileIO', 'hkpath') hpara.hklist = cf.get('FileIO', 'hklst') hmin = cf.getfloat('hk', 'hmin') hmax = cf.getfloat('hk', 'hmax') kmin = cf.getfloat('hk', 'kmin') kmax = cf.getfloat('hk', 'kmax') hpara.hrange = np.arange(hmin, hmax, 0.1) hpara.krange = np.arange(kmin, kmax, 0.01) vp = cf.get('hk', 'vp') if vp != '': hpara.vp = float(vp) w1 = cf.getfloat('hk', 'weight1') w2 = cf.getfloat('hk', 'weight2') w3 = cf.getfloat('hk', 'weight3') hpara.weight = (w1, w2, w3) return hpara