Changeset 798 for SHX/trunk


Ignore:
Timestamp:
10/25/12 10:42:13 (8 years ago)
Author:
marcus
Message:
  • Filter class now may hold original string input data
File:
1 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/modules/filters.py

    r796 r798  
    2222    """ 
    2323    def __init__(self, filter_type=None, filename=None, pos=None, 
    24                  input_coeff=[], output_coeff=[]): 
     24                 poles=[], zeros=[], input_coeff=[], output_coeff=[]): 
    2525        """ 
    2626        Initialize filter object from filter file. 
     
    3232        self.input_coeff = input_coeff 
    3333        self.output_coeff = output_coeff 
     34        self.zeros = zeros 
     35        self.poles = poles 
     36 
     37    def complexify(self): 
     38        """ 
     39        Parse string content of "poles" and "zeros" into complex numbers. 
     40        """ 
     41        self.input_coeff = [] 
     42        for _i in self.zeros: 
     43            self.input_coeff.append(complexifyString(_i)) 
     44        self.output_coeff = [] 
     45        for _i in self.poles: 
     46            self.output_coeff.append(complexifyString(_i)) 
    3447 
    3548    def inverse(self): 
     
    6982        # set doc string from comment 
    7083        while True: 
    71             line = lines.pop(0) 
    72             line.strip() 
     84            line = lines.pop(0).strip() 
    7385            # add comment to doc string 
    7486            if line.startswith('!'): 
    7587                self.__doc__ += line[1:] 
    7688                continue 
    77             import pdb; pdb.set_trace() 
    7889            # test for "magic" number 1357913578 
    7990            if not line.startswith("1357913578"): 
     
    94105                filter_type = int(lines.pop(0)) 
    95106                filter = Filter(filter_type, self.filename, pos) 
    96                 filter.input_coeff = [] 
    97                 filter.output_coeff = [] 
     107                filter.poles = [] 
     108                filter.zeros = [] 
    98109 
    99110                if filter_type == 1: 
     
    103114                    nol = int(lines.pop(0)) 
    104115                    for _ in xrange(nol): 
    105                         temp = complexifyString(lines.pop(0)) 
    106                         filter.input_coeff.append(temp) 
     116                        filter.zeros.append(lines.pop(0)) 
    107117                    # read output coefficient 
    108118                    nol = int(lines.pop(0)) 
    109119                    for _ in xrange(nol): 
    110                         temp = complexifyString(lines.pop(0)) 
    111                         filter.output_coeff.append(temp) 
     120                        filter.poles.append(lines.pop(0)) 
     121                    filter.complexify() 
    112122                elif filter_type == 2: 
    113123                    # FLT - digital filter 
     
    115125                    # read coefficients 
    116126                    for _ in xrange(nol): 
    117                         temp = [float(_i) for _i in lines.pop(0).split()] 
    118                         filter.input_coeff.append(temp) 
     127                        temp = [_i for _i in lines.pop(0).split()] 
     128                        filter.poles.append(temp) 
     129                        filter.input_coeff.append(map(float, temp)) 
    119130                elif filter_type == 3: 
    120131                    # FLR files - Finite Impulse Response (FIR) 
     
    128139                    nol = int(lines.pop(0)) 
    129140                    for _ in xrange(nol): 
    130                         filter.output_coeff.append(float(lines.pop(0))) 
     141                        temp = lines.pop(0) 
     142                        filter.poles.append(lines.pop(0)) 
     143                        filter.output_coeff.append(float(temp)) 
    131144                else: 
    132145                    raise 
Note: See TracChangeset for help on using the changeset viewer.