libqueso / queso Goto Github PK
View Code? Open in Web Editor NEWQUESO is a C++ library for doing uncertainty quantification. QUESO stands for Quantification of Uncertainty for Estimation, Simulation and Optimization.
License: Other
QUESO is a C++ library for doing uncertainty quantification. QUESO stands for Quantification of Uncertainty for Estimation, Simulation and Optimization.
License: Other
We must add the scalar type for the gaussian processes. Here, the type implies the dimension of the space being emulated.
Currently, queso supports vector types, but not scalars.
To finish this ticket, we must:
Should also consider if we wish to discuss this in the GPMSA meeting tomorrow.
See examples/statisticalInverse_Fortran
Note I had to reorder MPI_Abort()
and queso_error()
in Defines.h
in #75. This may lead to uncaught exceptions which in turn means that MPI_Abort
is not called and processes still go about their business when they shouldn't. We need to check for uncaught exceptions and call MPI_Abort
if this is the case.
I think libMesh does this.
Form the Jacobian, e.g. d(Z)/d(theta) where Z is the emulator and theta are the parameters.
As they say in the paper:
With these, one can explore the sensitivities of the simulator model, describe the parameter settings for which the simulator is consistent with the
data, and make predictions for the physical system at settings x for which no experimental data exist.
To reproduce:
#include <vector>
#include <string>
#include <iostream>
#include <queso/Environment.h>
#include <queso/GslVector.h>
#include <queso/GslMatrix.h>
#include <queso/VectorSpace.h>
int main(int argc, char **argv) {
MPI_Init(&argc, &argv);
QUESO::EnvOptionsValues options;
options.m_numSubEnvironments = 1;
QUESO::FullEnvironment *env = new QUESO::FullEnvironment(MPI_COMM_WORLD, "",
"", &options);
std::vector<std::string> names(1);
names[0] = "my_name";
QUESO::VectorSpace<QUESO::GslVector, QUESO::GslMatrix> vec_space(*env,
"vec_prefix", 1, &names);
QUESO::VectorSpace<QUESO::GslVector, QUESO::GslMatrix> vspace_cpy(vec_space);
delete env;
MPI_Finalize();
return 0;
}
Here's the error:
dyld: lazy symbol binding failed: Symbol not found: __ZN5QUESO9DistArrayISsE4copyERKS1_
Referenced from: /Users/damon/git/github/queso/build/sep_impl_vectorspace/src/.libs/libqueso-0.47.dylib
Expected in: flat namespace
dyld: Symbol not found: __ZN5QUESO9DistArrayISsE4copyERKS1_
Referenced from: /Users/damon/git/github/queso/build/sep_impl_vectorspace/src/.libs/libqueso-0.47.dylib
Expected in: flat namespace
Looks like our friend, the DistArray
copy constructor, is back.
We need a spiffy gravitar icon for queso. To get the dialogue going (and arguably, to use as a placeholder) I'm proposing:
http://users.ices.utexas.edu/~nick/collaborate/queso/queso-icon.jpg
or,
http://users.ices.utexas.edu/~nick/collaborate/queso/queso-icon-yellow.jpg
Thoughts?
Will require adding header files as target dependencies. Workaround is touch doxygen/queso.dox
before running make doc
.
I saw on Redmine that Ernesto has been updating QUESO code. Paul noticed that he is adding options to disable parameters, but we need to keep an eye on it:
41865 09/30/2013 08:42 pm Ernesto Prudencio changes for disabling parameters is user wants to
41858 09/30/2013 01:49 am Ernesto Prudencio For GPMSA tests: adding capability to disable parameters
$ grep -l -r template src/stats/inc
Gives this list:
Code coverage of this folder is sitting at 0.7% on my laptop. We could probably do better.
The release v0.47.0 went with a few out-of-date information and with an example that had a bug.
This new manual comes with 2 new, described examples (simpleStatisticalInveseProblem and simpleStatisticalForwardProblem), and includes the description of another one (validationCycle).
It should be used as the base ref for future user' s manuals.
Queso currently deals with faults by calling exit(1). This is not robust with respect to parallel computation, because any exit calls will tear down the entire routine.
Instead, we should move to exception handling that permits catching failures and dealing with them in an appropriate manner.
I propose we start this process by replacing all exit calls with queso_exit. To start this can invoke exit(1), and later this method can be overloaded. I'm guessing a quick alternative will be grvy_exit(), but long term I believe we should investigate fault tolerant process handling.
grep -rl 'template' src/basic/inc
Are these actual tests? If so, should they be in the top-level test directory?
@koomie suggested this one to lower the barrier of entry for new users. Helps questions like, "I need function foo
, which header is it in?"
Now that we have nifty exception handling, let's replace the numerous exit(1) calls with our mpi-friendly queso_exit()
queso-users
and queso-dev
are probably good names. Google groups ok with everyone? I'm open to suggestions.
@kemelli Would you like to set these up?
I think this code should run without error:
#include <vector>
#include <string>
#include <iostream>
#include <set>
#include <queso/Environment.h>
#include <queso/GslVector.h>
#include <queso/GslMatrix.h>
#include <queso/VectorSpace.h>
#include <queso/SequenceOfVectors.h>
int main(int argc, char **argv) {
MPI_Init(&argc, &argv);
QUESO::EnvOptionsValues options;
options.m_numSubEnvironments = 1;
options.m_subDisplayAllowAll = 0;
options.m_subDisplayAllowedSet.insert(0);
QUESO::FullEnvironment *env = new QUESO::FullEnvironment(MPI_COMM_WORLD, "",
"", &options);
// Create a vector space
std::vector<std::string> names(1);
names[0] = "my_name";
QUESO::VectorSpace<QUESO::GslVector, QUESO::GslMatrix> vec_space(*env,
"vec_prefix", 1, &names);
// Create some vectors to put in the VectorSequence
QUESO::GslVector v1(vec_space.zeroVector());
QUESO::GslVector v2(vec_space.zeroVector());
v1[0] = 0.0;
v2[0] = 1.0;
// Create a sequence of vectors
QUESO::SequenceOfVectors<QUESO::GslVector, QUESO::GslMatrix> vec_seq(vec_space, 2, "vec_seq");
vec_seq.setPositionValues(0, v1);
vec_seq.setPositionValues(1, v2);
// Now erase just one element (the 0th element)
vec_seq.erasePositions(0, 1);
MPI_Finalize();
return 0;
}
This relies on the copy
method in DistArray
being implemented.
The Macros in src/core/inc/Defines.h:
Are all old and do not appropriately understand MPI. Let's replace them with queso_exit (and associated) calls, which can provide catchable error handling as well as better information on what caused the failures.
Ernesto made two commits on the 8th of September. Merge these back into Queso git proper.
It lives in 1D1DFunction.h
.
Stick with the iso_c example as a better way to access QUESO from Fortran
git doesn't think too kindly of keyword substitution. But, I do miss a timestamp header at times. This can be pulled off with some additional attribute customization, but it may not be worth it or of sufficient interest. Evaluate and either:
We should fix this.
$ grep -rl 'template' src/gp/inc
Some of the tests are silently failing out-of-source. Fix imminent.
Dakota has a wrapper for Bayesian calibration with QUESO, which will have to be re-written when the changes in QUESO classes names become official.
This is just so you guys are aware and work with Laura Swiler/Brian Williams when the time comes.
:)
Here is it: https://software.sandia.gov/trac/dakota/browser/core/trunk/src/NonDQUESOBayesCalibration.cpp
branch v0.47.1 has the most current version of the user's manual. It needs to be merged to dev.
MPI is required, so this is unnecessary.
grep -rl 'template' src/core/inc
This example was created by Gabriel when using library ANN.
It needs to be tested and documented, so while that is not done, we should remove it from Queso distribution.
make check
output after setting --without-glpk
to configure
:
libtool: link: mpic++ -g -O2 -Wall -o .libs/BimodalExample_gsl example_main.o example_compute.o example_likelihood.o -Wl,-rpath -Wl,/opt/local/lib -Wl,-bind_at_load -L../../src/ /Users/damon/git/github/queso/src/.libs/libqueso.dylib -L/opt/local/lib /opt/local/lib/libgsl.dylib /opt/local/lib/libgslcblas.dylib -lboost_program_options-mt /opt/local/lib/libhdf5.dylib
Undefined symbols for architecture x86_64:
"_glp_add_cols", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_add_rows", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_create_prob", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_delete_prob", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_get_num_bin", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_get_num_cols", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_get_num_int", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_get_num_nz", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_get_num_rows", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_init_iocp", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_intopt", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_load_matrix", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_mip_col_val", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_mip_obj_val", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_mip_row_val", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_mip_status", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_col_bnds", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_col_kind", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_col_name", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_col_stat", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_obj_coef", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_obj_dir", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_prob_name", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_row_bnds", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_row_name", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
"_glp_set_row_stat", referenced from:
uqMLSamplingClass<uqGslVectorClass, uqGslMatrixClass>::solveBIP_proc0(std::vector<uqExchangeInfoStruct, std::allocator<uqExchangeInfoStruct> >&) in example_compute.o
ld: symbol(s) not found for architecture x86_64
GLPK is optional, so we should put some conditional foo around these so they don't get snarfed by accident.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.