Esempio n. 1
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)
Esempio n. 2
0
def cs_expansion_correlated(inputs, outputs, deg_cap=3, ord_cap=3):
    # Construct polynomial basis
    space = linalg.SampledPolynomialSpace(inputs, 2.0**inputs.shape[0])

    print "Constructing basis..."
    # basis = linalg.get_basis(space, ord_cap, deg_cap)
    basis_dict = linalg.get_basis_qr(space, ord_cap, deg_cap)

    sensing_columns = []
    basis_polys = []
    zipped_basis = []
    for syms, syms_zipped_basis in basis_dict.items():
        polys, values = zip(*syms_zipped_basis)
        polys = list(polys)
        values = list(values)
        sensing_columns += values
        zipped_basis += syms_zipped_basis
        basis_polys += [(p, syms) for p in polys]
    
    print "done.\n"

    # Construct sensing matrix
    print "Constructing sensing matrix..."
    A = np.column_stack(sensing_columns)

    print "Solving for compressed coefficients..."
    # coeffs = basis_pursuit.l1m(A, outputs, e=0)
    coeffs = list(meridian_cs.mbcs(A, outputs, 0.1))
    print "done.\n"
    
    return zip(zipped_basis, coeffs)