mirror of
https://github.com/aportelli/LatAnalyze.git
synced 2025-06-20 00:06:55 +01:00
Compare commits
7 Commits
4988f351f2
...
develop
Author | SHA1 | Date | |
---|---|---|---|
e4861e7b50 | |||
ee60d083c8 | |||
9a27a58bf2 | |||
e24db46f76 | |||
317f8b973b | |||
9a01f33983 | |||
f4741c6298 |
2
.github/workflows/build-macos.yml
vendored
2
.github/workflows/build-macos.yml
vendored
@ -5,7 +5,7 @@ on: [push, workflow_dispatch]
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-11
|
||||
runs-on: macos-15
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
2
.github/workflows/build-ubuntu.yml
vendored
2
.github/workflows/build-ubuntu.yml
vendored
@ -5,7 +5,7 @@ on: [push]
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
@ -1,5 +1,5 @@
|
||||
# package config
|
||||
cmake_minimum_required(VERSION 3.11.0)
|
||||
cmake_minimum_required(VERSION 3.24.0)
|
||||
project(
|
||||
LatAnalyze
|
||||
VERSION 3.6
|
||||
@ -41,18 +41,17 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
|
||||
# fetch and create symbolic link to Eigen headers
|
||||
set(FETCHCONTENT_BASE_DIR ${CMAKE_BINARY_DIR}/deps)
|
||||
FetchContent_Declare(
|
||||
Eigen3
|
||||
GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
||||
GIT_TAG 3.4.0)
|
||||
FetchContent_GetProperties(Eigen3)
|
||||
if(NOT eigen3_POPULATED)
|
||||
FetchContent_Populate(Eigen3)
|
||||
message(STATUS "Eigen3 fetched")
|
||||
set(EIGEN_URL "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz")
|
||||
set(EIGEN_TGZ "${CMAKE_BINARY_DIR}/eigen-3.4.0.tar.gz")
|
||||
set(EIGEN_DIR "${CMAKE_BINARY_DIR}/deps/eigen-src")
|
||||
if(NOT EXISTS "${EIGEN_DIR}/Eigen/Dense")
|
||||
file(DOWNLOAD "${EIGEN_URL}" "${EIGEN_TGZ}" SHOW_PROGRESS)
|
||||
file(ARCHIVE_EXTRACT INPUT "${EIGEN_TGZ}" DESTINATION "${CMAKE_BINARY_DIR}/deps")
|
||||
file(GLOB EIGEN_EXTRACTED_DIR "${CMAKE_BINARY_DIR}/deps/eigen-*")
|
||||
file(RENAME "${EIGEN_EXTRACTED_DIR}" "${EIGEN_DIR}")
|
||||
message(STATUS "Eigen3 fetched")
|
||||
endif()
|
||||
file(CREATE_LINK ${eigen3_SOURCE_DIR}/Eigen
|
||||
${CMAKE_SOURCE_DIR}/lib/LatAnalyze/Eigen SYMBOLIC)
|
||||
file(CREATE_LINK ${EIGEN_DIR}/Eigen ${CMAKE_SOURCE_DIR}/lib/LatAnalyze/Eigen SYMBOLIC)
|
||||
|
||||
# dependencies
|
||||
find_package(Threads REQUIRED)
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
name='gsl-2.6'
|
||||
name='gsl-2.8'
|
||||
|
||||
if (($# != 2)); then
|
||||
echo "usage: $(basename "$0") <prefix> <ntasks>" 1>&2
|
||||
@ -15,7 +15,7 @@ mkdir -p "${prefix}"
|
||||
cd "${prefix}"
|
||||
prefix=$(pwd -P)
|
||||
cd "${init_dir}/local/build"
|
||||
wget http://ftpmirror.gnu.org/gsl/${name}.tar.gz
|
||||
wget https://mirror.ibcp.fr/pub/gnu/gsl/${name}.tar.gz
|
||||
tar -xzvf ${name}.tar.gz
|
||||
mkdir -p ${name}/build
|
||||
cd ${name}/build
|
||||
|
@ -88,10 +88,12 @@ install(
|
||||
FILE LatAnalyzeTargets.cmake
|
||||
NAMESPACE LatAnalyze::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LatAnalyze)
|
||||
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
configure_package_config_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LatAnalyzeConfig.cmake"
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LatAnalyze)
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LatAnalyze
|
||||
PATH_VARS INCLUDE_INSTALL_DIR)
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LatAnalyzeConfigVersion.cmake"
|
||||
VERSION "${PROJECT_VERSION}"
|
||||
|
@ -25,4 +25,6 @@ endforeach()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/LatAnalyzeTargets.cmake")
|
||||
|
||||
set(@PROJECT_NAME@_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||
|
||||
check_required_components(LatAnalyze)
|
||||
|
@ -166,5 +166,17 @@ auto chi2CcdfVecFunc = [](const double arg[2])
|
||||
return gsl_cdf_chisq_Q(arg[0], arg[1]);
|
||||
};
|
||||
|
||||
auto hotellingT2PValueVecFunc = [](const double arg[3])
|
||||
{
|
||||
double T2 = arg[0];
|
||||
double n = arg[1];
|
||||
double p = arg[2];
|
||||
double F = (n - p) / (p * (n - 1)) * T2;
|
||||
double p_value = 1.0 - gsl_cdf_fdist_P(F, p, n - p);
|
||||
|
||||
return p_value;
|
||||
};
|
||||
|
||||
DoubleFunction MATH_NAMESPACE::chi2PValue(chi2PValueVecFunc, 2);
|
||||
DoubleFunction MATH_NAMESPACE::chi2Ccdf(chi2CcdfVecFunc, 2);
|
||||
DoubleFunction MATH_NAMESPACE::hotellingT2PValue(hotellingT2PValueVecFunc, 3);
|
||||
|
@ -160,6 +160,7 @@ namespace MATH_NAMESPACE
|
||||
{
|
||||
extern DoubleFunction chi2PValue;
|
||||
extern DoubleFunction chi2Ccdf;
|
||||
extern DoubleFunction hotellingT2PValue;
|
||||
}
|
||||
|
||||
END_LATAN_NAMESPACE
|
||||
|
@ -511,6 +511,36 @@ PlotImpulses::PlotImpulses(const DVec &x, const DVec &y)
|
||||
setCommand("'" + tmpFileName + "' u 1:2 w impulses");
|
||||
}
|
||||
|
||||
// PlotGrid constructor ////////////////////////////////////////////////////////
|
||||
PlotGrid::PlotGrid(const DVec &x, const DVec &y, const DMat &value)
|
||||
{
|
||||
if (x.size() != value.rows())
|
||||
{
|
||||
LATAN_ERROR(Size, "x vector does not have the same size as value matrix rows");
|
||||
}
|
||||
if (y.size() != value.cols())
|
||||
{
|
||||
LATAN_ERROR(Size, "y vector does not have the same size as value matrix columns");
|
||||
}
|
||||
if (value.rows() < 2 || value.cols() < 2)
|
||||
{
|
||||
LATAN_ERROR(Size, "value matrix must have at least 2 rows and 2 columns");
|
||||
}
|
||||
DMat d(value.cols()+1, value.rows()+1);
|
||||
string tmpFileName;
|
||||
d(0,0) = value.cols();
|
||||
d.row(0).tail(value.cols()) = x;
|
||||
d.col(0).tail(value.rows()) = y;
|
||||
for (Index i = 0; i < value.rows(); ++i)
|
||||
for (Index j = 0; j < value.cols(); ++j)
|
||||
{
|
||||
d(i+1, j+1) = value(j, i);
|
||||
}
|
||||
tmpFileName = dumpToTmpFile(d);
|
||||
pushTmpFile(tmpFileName);
|
||||
setCommand("'" + tmpFileName + "' nonuniform matrix w image");
|
||||
}
|
||||
|
||||
// PlotMatrixNoRange constructor ///////////////////////////////////////////////
|
||||
PlotMatrixNoRange::PlotMatrixNoRange(const DMat &m)
|
||||
{
|
||||
|
@ -200,6 +200,15 @@ public:
|
||||
virtual ~PlotImpulses(void) = default;
|
||||
};
|
||||
|
||||
class PlotGrid: public PlotObject
|
||||
{
|
||||
public:
|
||||
// constructor
|
||||
PlotGrid(const DVec &x, const DVec &y, const DMat &value);
|
||||
// destructor
|
||||
virtual ~PlotGrid(void) = default;
|
||||
};
|
||||
|
||||
class PlotMatrixNoRange: public PlotObject
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user