Example #1
0
 def _validate_basis(self, sample, basis):
     self.assertTrue(
         sym_poly_utils.validate_sample_basis_ho(sample, basis)
     )
     self.assertTrue(
         sym_poly_utils.validate_sample_basis_n(sample, basis)
     )
Example #2
0
def cs_hdmr_expansion(inputs, outputs, basis_dict):
    print "Validating hierarchical orthogonality of basis:", sym_poly_utils.validate_sample_basis_ho(inputs, basis_dict)
    print "Validating normality of basis:", sym_poly_utils.validate_sample_basis_n(inputs, basis_dict)
    
    sensing_columns = []
    basis_polys = []
    basis_poly_syms = []
    for syms, poly_list in basis_dict.items():
        _, values = zip(*[(x.poly, x.vals) for x in poly_list])
        values = list(values)

        sensing_columns += values

        basis_polys += poly_list
        basis_poly_syms += [syms]*len(poly_list)

    # Construct sensing matrix
    # astype fixes speed issue
    A = np.column_stack(sensing_columns).astype(float)
    
    # coeffs = basis_pursuit.l1m(A, outputs, e=0)
    coeffs = list(meridian_cs.mbcs(A, outputs, 0.1))

    d = defaultdict(list)
    for syms, p, c in zip(basis_poly_syms, basis_polys, coeffs):
        d[syms] += [(p, c)]

    return BasisExpansion(d, inputs)