Skip to content

Commit

Permalink
MixtureFactory: Add GetValidCovarianceModels
Browse files Browse the repository at this point in the history
Closes #22
  • Loading branch information
jschueller committed Jun 15, 2024
1 parent feb501a commit fcbe0cc
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 34 deletions.
32 changes: 32 additions & 0 deletions lib/src/MixtureFactory.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,36 @@ void MixtureFactory::setSeed(const OT::SignedInteger seed)
seed_ = seed;
}

OT::Description MixtureFactory::GetValidCovarianceModels()
{
return {"Gaussian_p_L_I",
"Gaussian_p_Lk_I",
"Gaussian_p_L_B",
"Gaussian_p_Lk_B",
"Gaussian_p_L_Bk",
"Gaussian_p_Lk_Bk",
"Gaussian_p_L_C",
"Gaussian_p_Lk_C",
"Gaussian_p_L_D_Ak_D",
"Gaussian_p_Lk_D_Ak_D",
"Gaussian_p_L_Dk_A_Dk",
"Gaussian_p_Lk_Dk_A_Dk",
"Gaussian_p_L_Ck",
"Gaussian_p_Lk_Ck",
"Gaussian_pk_L_I",
"Gaussian_pk_Lk_I",
"Gaussian_pk_L_B",
"Gaussian_pk_Lk_B",
"Gaussian_pk_L_Bk",
"Gaussian_pk_Lk_Bk",
"Gaussian_pk_L_C",
"Gaussian_pk_Lk_C",
"Gaussian_pk_L_D_Ak_D",
"Gaussian_pk_Lk_D_Ak_D",
"Gaussian_pk_L_Dk_A_Dk",
"Gaussian_pk_Lk_Dk_A_Dk",
"Gaussian_pk_L_Ck",
"Gaussian_pk_Lk_Ck"};
}

} // namespace OTMIXMOD
2 changes: 2 additions & 0 deletions lib/src/otmixmod/MixtureFactory.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ public:

typedef OT::Collection< OT::Sample > SampleCollection;

static OT::Description GetValidCovarianceModels();

/** Default constructor */
MixtureFactory();

Expand Down
49 changes: 18 additions & 31 deletions python/src/MixtureFactory_doc.i.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,7 @@ atomsNumber : int
covarianceModel : str, optional
The covariance model.
Default is 'Gaussian_pk_Lk_C'

Other possible values include:

- Gaussian_p_L_I
- Gaussian_p_Lk_I
- Gaussian_p_L_B
- Gaussian_p_Lk_B
- Gaussian_p_L_Bk
- Gaussian_p_Lk_Bk
- Gaussian_p_L_C
- Gaussian_p_Lk_C
- Gaussian_p_L_D_Ak_D
- Gaussian_p_Lk D_Ak_D
- Gaussian_p_L_Dk_A_Dk
- Gaussian_p_Lk_Dk_A_Dk
- Gaussian_p_L_Ck
- Gaussian_p_Lk_Ck
- Gaussian_pk_L_I
- Gaussian_pk_Lk_I
- Gaussian_pk_L_B
- Gaussian_pk_Lk_B
- Gaussian_pk_L_Bk
- Gaussian_pk_Lk_Bk
- Gaussian_pk_L_C
- Gaussian_pk_Lk_C
- Gaussian_pk_L_D_Ak_D
- Gaussian_pk_Lk D_Ak_D
- Gaussian_pk_L_Dk_A_Dk
- Gaussian_pk_Lk_Dk_A_Dk
- Gaussian_pk_L_Ck
- Gaussian_pk_Lk_Ck
See :meth:`GetValidCovarianceModels` for available models

Notes
-----
Expand Down Expand Up @@ -104,3 +74,20 @@ Returns
atomsNumber : int
The number of atoms
"

// ----------------------------------------------------------------------------

%feature("docstring") OTMIXMOD::MixtureFactory::GetValidCovarianceModels
"Available covariance models names accessor.

Returns
-------
names : :class:`openturns.Description`
Valid covariance model names

Examples
--------
>>> import otmixmod
>>> otmixmod.MixtureFactory.GetValidCovarianceModels()[:3]
[Gaussian_p_L_I,Gaussian_p_Lk_I,Gaussian_p_L_B]
"
5 changes: 3 additions & 2 deletions python/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ macro (ot_pyinstallcheck_test TESTNAME)
endmacro ()


ot_pyinstallcheck_test ( MixtureFactory_std )
ot_pyinstallcheck_test ( MixtureFactory_expert )
ot_pyinstallcheck_test (MixtureFactory_std)
ot_pyinstallcheck_test (MixtureFactory_expert)
ot_pyinstallcheck_test (docstring IGNOREOUT)

add_custom_target ( pyinstallcheck COMMAND ${CMAKE_CTEST_COMMAND} -R "^pyinstallcheck_"
COMMENT "Run Python post-installation tests" )
Expand Down
26 changes: 26 additions & 0 deletions python/test/t_MixtureFactory_std.expout
Original file line number Diff line number Diff line change
@@ -1,2 +1,28 @@
Gaussian_p_L_I PDF=0.012407
Gaussian_p_Lk_I PDF=0.032389
Gaussian_p_L_B PDF=0.012413
Gaussian_p_Lk_B PDF=0.032380
Gaussian_p_L_Bk PDF=0.012415
Gaussian_p_Lk_Bk PDF=0.032393
Gaussian_p_L_C PDF=0.012782
Gaussian_p_Lk_C PDF=0.035355
Gaussian_p_L_D_Ak_D PDF=0.013007
Gaussian_p_Lk_D_Ak_D PDF=0.029489
Gaussian_p_L_Dk_A_Dk PDF=0.013318
Gaussian_p_Lk_Dk_A_Dk PDF=0.032333
Gaussian_p_L_Ck PDF=0.013023
Gaussian_p_Lk_Ck PDF=0.029526
Gaussian_pk_L_I PDF=0.012774
Gaussian_pk_Lk_I PDF=0.033169
Gaussian_pk_L_B PDF=0.012780
Gaussian_pk_Lk_B PDF=0.033159
Gaussian_pk_L_Bk PDF=0.012782
Gaussian_pk_Lk_Bk PDF=0.033173
Gaussian_pk_L_C PDF=0.013153
Gaussian_pk_Lk_C PDF=0.036198
Gaussian_pk_L_D_Ak_D PDF=0.013311
Gaussian_pk_Lk_D_Ak_D PDF=0.030162
Gaussian_pk_L_Dk_A_Dk PDF=0.013627
Gaussian_pk_Lk_Dk_A_Dk PDF=0.033043
Gaussian_pk_L_Ck PDF=0.013327
Gaussian_pk_Lk_Ck PDF=0.030200
2 changes: 1 addition & 1 deletion python/test/t_MixtureFactory_std.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
distributionRef = ot.Mixture(coll)
sample = distributionRef.getSample(size)

for covarianceModel in ['Gaussian_pk_L_B', 'Gaussian_pk_L_Bk']:
for covarianceModel in otmixmod.MixtureFactory.GetValidCovarianceModels():
factory = otmixmod.MixtureFactory(3, covarianceModel)
estimatedDistribution, labels, BICLogLikelihood = factory.build(sample)
print(covarianceModel, "PDF=%.6f" %
Expand Down

0 comments on commit fcbe0cc

Please sign in to comment.