From 500855f426b5aaa808b580b81a5ff8c9e8f60b4f Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Tue, 24 Oct 2023 16:16:38 -0400 Subject: [PATCH] build: streamline .cmake instructions --- CMakeLists.txt | 35 ++----------------------------- EXAMPLES | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 33 deletions(-) create mode 100644 EXAMPLES diff --git a/CMakeLists.txt b/CMakeLists.txt index af0bae5b..36786fb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,42 +3,11 @@ cmake_minimum_required(VERSION 3.10) project(xo_pyprocess VERSION 0.1) -enable_language(CXX) -# common XO cmake macros (see github.com:Rconybea/xo-cmake) -include(xo_macros/xo_cxx) -include(xo_macros/code-coverage) +include(xo_macros/xo-project-macros) -# ---------------------------------------------------------------- -# unit test setup - -enable_testing() -# activate code coverage for all executables + libraries (when configured with -DCODE_COVERAGE=ON) -add_code_coverage() -# 1. assuming that /nix/store/ prefixes .hpp files belonging to gcc, catch2 etc. -# we're not interested in code coverage for these sources. -# 2. exclude the utest/ subdir, we don't need coverage on the unit tests themselves; -# rather, want coverage on the code that the unit tests exercise. -# -# NOTE: this seems to work only with the 'ccov-all' target. In particular, doesn't seem to do anything with the 'ccov' target -# -add_code_coverage_all_targets(EXCLUDE /nix/store/* ${PROJECT_SOURCE_DIR}/utest/* ${PROJECT_BINARY_DIR}/local/* ${PROJECT_SOURCE_DIR}/repo/*) - -# ---------------------------------------------------------------- -# c++ settings (usually temporary) - -set(PROJECT_CXX_FLAGS "") -add_definitions(${PROJECT_CXX_FLAGS}) - -xo_toplevel_compile_options() - -# ---------------------------------------------------------------- -# sources +xo_cxx_toplevel_options() add_subdirectory(src/pyprocess) -#add_subdirectory(utest) - -# ---------------------------------------------------------------- -# provide find_package() support xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets) diff --git a/EXAMPLES b/EXAMPLES new file mode 100644 index 00000000..a8ce9feb --- /dev/null +++ b/EXAMPLES @@ -0,0 +1,57 @@ +process module, using pybind11 to wrap c++ implementation + +To demo + +1. build the kalman project + see path/to/kalman/README + + python-compatible .so will be at: + path/to/kalman/build/process_py/process_py.cpython-39-darwin.so + +2. run python: + $ cd path/to/kalman/build/pyprocess + $ python3 + Python 3.9.12 (main, May 13 2022, 08:13:55) + [Clang 11.1.0 ] on darwin + Type "help", "copyright", "credits" or "license" for more information. + >>> + +3. import pybind11 module and run: + >>> import pyprocess + >>> import datetime as dt + >>> from datetime import datetime as clock + >>> t0=clock.now() + # brownian motion, 50% annual volatility + >>> bm=pyprocess.make_brownian_motion(t0, 0.5) + >>> bm + + >>> bm.exterior_sample(t0, [t0, 2.0]) + 2.0 + >>> bm.exterior_sample(t0, [t0, 1.0]) + 1.0 + >>> bm.exterior_sample(t0 + dt.timedelta(days=30, [t0, 1.0])) + 1.959941114989831 + + >>> ebm=pyprocess.make_exponential_brownian_motion(t0, 0.5) + >>> ebm + + >>> ebm.exterior_sample(t + dt.timedelta(days=180, [t0, 50.0])) + 42.3212369005776 + >>> ebm.exterior_sample(t + dt.timedelta(days=180, [t0, 50.0])) + 56.16317742801309 + + >>> r=pyprocess.make_realization_source(ebm, dt.timedelta(seconds=1)) + +4. attach printer + + >>> import reactor_py + >>> p=reactor_py.make_realization_printer() + >>> r.attach_sink(p) + >>> bm.deliver_one() + >>> bm.deliver_one() + >>> r.deliver_one() + [20220718:224818.909576, 0] + 1 + >>> r.deliver_one() + [20220718:224819.909576, -0.000111338] + 1