Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The OrthogonalProductFunctionFactory.build() method does not accept multi-indices #2648

Open
mbaudin47 opened this issue May 9, 2024 · 1 comment

Comments

@mbaudin47
Copy link
Collaborator

mbaudin47 commented May 9, 2024

What happened?

The script below creates an orthogonal basis of 2 functions. Then the build() method is evaluated to create the functions in the basis, using the multi-indices. It then fails with the following error:

Traceback (most recent call last):
  File "/home/devel/Documents/t_OrthogonalProductFunctionFactory_std.py", line 12, in <module>
    termBasis2 = productBasis.build(index)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/devel/miniconda3/envs/ot122/lib/python3.12/site-packages/openturns/orthogonalbasis.py", line 3671, in build
    return _orthogonalbasis.OrthogonalProductFunctionFactory_build(self, index)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: in method 'OrthogonalProductFunctionFactory_build', argument 2 of type 'OT::UnsignedInteger'

Building the function based on a single index works fine:

termBasis2 = productBasis.build(i)  # OK

How to reproduce the issue?

import openturns as ot

enumerateFunction = ot.LinearEnumerateFunction(2)
productBasis = ot.OrthogonalProductFunctionFactory(
    [ot.HaarWaveletFactory(), ot.HaarWaveletFactory()], enumerateFunction
)

for i in range(20):
    index = enumerateFunction(i)
    termBasis2 = productBasis.build(index)  # Fails

Version

1.22

Operating System

unknown

Installation media

unknown

Additional Context

This bug was revealed while working on #2619

@regislebrun
Copy link
Member

This is not a bug, this is the intended behaviour of a map between $\mathbb{N}$ and a sequence of functions $(f_i)_{i\in\mathbb{N}}$. What you request is an additional feature of OrthogonalProductFunctionFactory, which could also be added to OrthogonalProductPolynomialFactory.

mbaudin47 added a commit to mbaudin47/openturns that referenced this issue May 11, 2024
New OrthogonalProductPolynomialFactory.getMarginal()
New OrthogonalProductFunctionFactory.getMarginal()
New OrthogonalProductFunctionFactory.build(indices)
New OrthogonalProductPolynomialFactory.build(indices)

Closes openturns#2648
mbaudin47 added a commit to mbaudin47/openturns that referenced this issue May 12, 2024
New OrthogonalProductPolynomialFactory.getMarginal()
New OrthogonalProductFunctionFactory.getMarginal()
New OrthogonalProductFunctionFactory.build(indices)
New OrthogonalProductPolynomialFactory.build(indices)

Closes openturns#2648

Add a new unit test to getFunctionFamilyCollection()
mbaudin47 added a commit to mbaudin47/openturns that referenced this issue May 14, 2024
New OrthogonalProductPolynomialFactory.getMarginal()
New OrthogonalProductFunctionFactory.getMarginal()
New OrthogonalProductFunctionFactory.build(indices)
New OrthogonalProductPolynomialFactory.build(indices)

Closes openturns#2648

Add a new unit test to getFunctionFamilyCollection()
mbaudin47 added a commit to mbaudin47/openturns that referenced this issue May 29, 2024
New OrthogonalProductPolynomialFactory.getMarginal()
New OrthogonalProductFunctionFactory.getMarginal()
New OrthogonalProductFunctionFactory.build(indices)
New OrthogonalProductPolynomialFactory.build(indices)

Closes openturns#2648

Add a new unit test to getFunctionFamilyCollection()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants