diff --git a/.github/workflows/CIValidations.yml b/.github/workflows/CIValidations.yml index 43de4d1..069269c 100644 --- a/.github/workflows/CIValidations.yml +++ b/.github/workflows/CIValidations.yml @@ -41,13 +41,16 @@ jobs: test: MaCh3CLI --FitterValidations compilation_flags: -DMaCh3Tutorial_LOW_MEMORY_STRUCTS_ENABLED=ON + - name: NuDock Validations + test: MaCh3CLI --NuDockValidations + compilation_flags: -DMaCh3Tutorial_DEBUG_ENABLED=ON + container: image: ghcr.io/mach3-software/mach3:alma9v1.3.0 steps: - uses: actions/checkout@v6 - - name: Get MaCh3 Validations run: | cd /opt/ diff --git a/CIValidations/CMakeLists.txt b/CIValidations/CMakeLists.txt index f5c5dfc..995e335 100755 --- a/CIValidations/CMakeLists.txt +++ b/CIValidations/CMakeLists.txt @@ -45,4 +45,8 @@ if(MaCh3Tutorial_Benchmark_ENABLED) add_subdirectory(Benchmark) endif() +if(MaCh3Tutorial_NUDOCK_ENABLED) + add_subdirectory(NuDock) +endif() + add_subdirectory(SplinePlotting) diff --git a/CIValidations/MaCh3CLI b/CIValidations/MaCh3CLI index acc2025..55177fd 100755 --- a/CIValidations/MaCh3CLI +++ b/CIValidations/MaCh3CLI @@ -25,6 +25,7 @@ show_help() { echo -e "\t --ReweightValidations : Checking if reweighting works" echo -e "\t --CovarianceValidations : Checking if covariances works" echo -e "\t --NuMCMCToolsValidations : Checking if interface to NuMCMC Tools works" + echo -e "\t --NuDockValidations : Checking if interface to NuDock works" echo -e "\t --all : Run all checks" } @@ -86,6 +87,15 @@ run_nu_mcmc_tools_validations() { python3 CIValidations/TestNuMCMC.py } +run_nudock_validations() { + if [[ -x "${MaCh3Tutorial_ROOT}/CIValidations/NuDock/RunNuDockServer" ]]; then + "${MaCh3Tutorial_ROOT}/CIValidations/NuDock/RunNuDockServer" \ + "${MaCh3Tutorial_ROOT}/TutorialConfigs/FitterConfig.yaml" + else + echo "RunNuDockServer not found or not executable, skipping." + fi +} + # Parse command-line arguments while [[ $# -gt 0 ]]; do case $1 in @@ -105,6 +115,9 @@ while [[ $# -gt 0 ]]; do --NuMCMCToolsValidations) RUN_NU_MCMC=true ;; + --NuDockValidations) + RUN_NU_DOCK=true + ;; --all) RUN_ALL=true ;; @@ -128,11 +141,13 @@ if [ "$RUN_ALL" = true ]; then run_fitter_validations run_covariance_validations run_nu_mcmc_tools_validations + run_nudock_validations else [ "$RUN_REWEIGHT" = true ] && run_reweight_validations [ "$RUN_FITTER" = true ] && run_fitter_validations [ "$RUN_COVARIANCE" = true ] && run_covariance_validations [ "$RUN_NU_MCMC" = true ] && run_nu_mcmc_tools_validations + [ "$RUN_NU_DOCK" = true ] && run_nudock_validations fi echo "Validation process completed!" diff --git a/CIValidations/NuDock/CMakeLists.txt b/CIValidations/NuDock/CMakeLists.txt new file mode 100755 index 0000000..9496bec --- /dev/null +++ b/CIValidations/NuDock/CMakeLists.txt @@ -0,0 +1,10 @@ +add_custom_target(NuDockApps) + +foreach(app + RunNuDockServer + ) + + add_executable(${app} ${app}.cpp) + target_link_libraries(${app} MaCh3Tutorial::SamplesTutorial) + add_dependencies(NuDockApps ${app}) +endforeach(app) diff --git a/CIValidations/NuDock/RunNuDockServer.cpp b/CIValidations/NuDock/RunNuDockServer.cpp new file mode 100644 index 0000000..3f6af60 --- /dev/null +++ b/CIValidations/NuDock/RunNuDockServer.cpp @@ -0,0 +1,58 @@ +// MaCh3 includes +#include "Manager/Manager.h" +#include "Fitters/MaCh3Factory.h" + +#include "NuDock/NuDockFactory.h" +#include "NuDock/NuDockServerBase.h" + +#include "SamplesTutorial/SampleHandlerTutorial.h" + +nlohmann::json ping(nlohmann::json _request) +{ + std::cout << "Received request from client: " << _request.dump() << std::endl; + nlohmann::json response; + // response["message"] = "ping"; + response="pong"; + return response; +}; + +int main(int argc, char **argv){ + auto FitManager = MaCh3ManagerFactory(argc, argv); + FitManager->OverrideSettings("NuDock", "Debug", false); + FitManager->OverrideSettings("NuDock", "Verbose", false); + FitManager->OverrideSettings("NuDock", "AddPriorLLH", false); + FitManager->OverrideSettings("NuDock", "NuDockVerbosity", "INFO"); + FitManager->OverrideSettings("NuDock", "CommunicationType", "UNIX_DOMAIN_SOCKET"); + FitManager->OverrideSettings("NuDock", "Port", 50051); + + // Initialise covariance class reasonable for Systematics + auto xsec = MaCh3CovarianceFactory(FitManager.get(), "Xsec"); + + // Initialise samplePDF + auto SampleConfig = Get>(FitManager->raw()["General"]["TutorialSamples"], __FILE__ , __LINE__); + auto mySamples = MaCh3SampleHandlerFactory(SampleConfig, xsec.get()); + + auto serverObj = std::make_unique(FitManager.get()); + // Add covariance to MCM + serverObj->AddSystObj(xsec.get()); + for (size_t i = 0; i < SampleConfig.size(); ++i) { + serverObj->AddSampleHandler(mySamples[i]); + } + serverObj->setup(); + + MACH3LOG_INFO("Testing log_likelihood calculation..."); + MACH3LOG_INFO("Initial log_likelihood: {}", serverObj->getLogLikelihood()); + + MACH3LOG_INFO("Starting NuDock server..."); + std::unique_ptr nudock_ptr = nullptr; + InitialiseNuDockObj(FitManager.get(), nudock_ptr); + nudock_ptr->register_response("/ping", std::bind(ping, std::placeholders::_1)); + nudock_ptr->register_response("/log_likelihood", [&serverObj](const nlohmann::json &request) { + return serverObj->getLogLikelihood(); + }); + + for (size_t i = 0; i < SampleConfig.size(); ++i) { + delete mySamples[i]; + } + return 0; +} diff --git a/CMakeLists.txt b/CMakeLists.txt index 109713c..0755e70 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ include(CIValidations) option(MaCh3_CPM "Whether MaCh3 was obtained using CPM or find_package" OFF) option(MaCh3Tutorial_PROFILING_ENABLED "Will run with gperftools" OFF) option(Use_External_MaCh3 "Use an externally installed MaCh3 instead of CPM" OFF) +option(MaCh3Tutorial_NUDOCK_ENABLED "Whether to enable NuDock support" OFF) option(MaCh3Tutorial_DEBUG_ENABLED "Use debug options" OFF) option(MaCh3Tutorial_LOW_MEMORY_STRUCTS_ENABLED "Use floats" OFF) option(PYTHON_ENABLED "Build python package" OFF) @@ -88,6 +89,10 @@ if(NOT MaCh3_FOUND) list(APPEND MaCh3_OPTIONS "LOG_LEVEL ${LOG_LEVEL}") endif() + if (MaCh3Tutorial_NUDOCK_ENABLED) + list(APPEND MaCh3_OPTIONS "MaCh3_NUDOCK_ENABLED ON") + endif() + if (MaCh3Tutorial_NATIVE_ENABLED) list(APPEND MaCh3_OPTIONS "MaCh3_NATIVE_ENABLED ON") endif() diff --git a/Tutorial/LLHScanTutorial.cpp b/Tutorial/LLHScanTutorial.cpp old mode 100644 new mode 100755