IsoSpecPy 2.3.0.dev1__tar.gz → 2.3.0.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/Makefile +1 -1
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/fasta.h +22 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/isoMath.cpp +2 -3
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/isoMath.h +2 -2
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/isoSpec++.cpp +19 -15
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/isoSpec++.h +69 -19
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/marginalTrek++.cpp +42 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/marginalTrek++.h +157 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/misc.h +5 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/mman.cpp +1 -0
- isospecpy-2.3.0.dev3/IsoSpec++/test.cpp +6 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy.egg-info/PKG-INFO +11 -1
- isospecpy-2.3.0.dev3/IsoSpecPy.egg-info/SOURCES.txt +214 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/PKG-INFO +1 -1
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/pyproject.toml +1 -1
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/element_zero.cpp +2 -2
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_generator_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_generator_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_generator_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_generator_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_generator_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_layered_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_ordered_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_ordered_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_ordered_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_ordered_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_ordered_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_stochastic_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_stochastic_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_stochastic_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_stochastic_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_stochastic_memsan +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_threshold.cpp +2 -2
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_gprof_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_gprof_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_memsan +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_threshold_profile.cpp +3 -3
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_profile_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_profile_gcc +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_threshold_simple.cpp +2 -2
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_simple_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_simple_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_simple_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_simple_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/from_formula_threshold_simple_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_cfi +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_dbg_fast +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/main_test_ss +0 -0
- isospecpy-2.3.0.dev3/tests/C++/mass_range_asan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/mass_range_clang +0 -0
- isospecpy-2.3.0.dev3/tests/C++/mass_range_dbg +0 -0
- isospecpy-2.3.0.dev3/tests/C++/mass_range_gcc +0 -0
- isospecpy-2.3.0.dev3/tests/C++/mass_range_memsan +0 -0
- isospecpy-2.3.0.dev3/tests/C++/single_atom_stochastic.cpp +44 -0
- isospecpy-2.3.0.dev1/CMakeCache.txt +0 -453
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CMakeCCompiler.cmake +0 -84
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CMakeCXXCompiler.cmake +0 -104
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CMakeDetermineCompilerABI_C.bin +0 -0
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CMakeDetermineCompilerABI_CXX.bin +0 -0
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CMakeSystem.cmake +0 -15
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdC/CMakeCCompilerId.c +0 -905
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdC/a.out +0 -0
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdC/apple-sdk.c +0 -1
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -920
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdCXX/a.out +0 -0
- isospecpy-2.3.0.dev1/CMakeFiles/4.0.2/CompilerIdCXX/apple-sdk.cpp +0 -1
- isospecpy-2.3.0.dev1/CMakeFiles/CMakeConfigureLog.yaml +0 -535
- isospecpy-2.3.0.dev1/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
- isospecpy-2.3.0.dev1/CMakeFiles/InstallScripts.json +0 -8
- isospecpy-2.3.0.dev1/CMakeFiles/Makefile.cmake +0 -159
- isospecpy-2.3.0.dev1/CMakeFiles/Makefile2 +0 -179
- isospecpy-2.3.0.dev1/CMakeFiles/TargetDirectories.txt +0 -14
- isospecpy-2.3.0.dev1/CMakeFiles/cmake.check_cache +0 -1
- isospecpy-2.3.0.dev1/CMakeFiles/progress.marks +0 -1
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/DependInfo.cmake +0 -30
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/build.make +0 -123
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/cmake_clean.cmake +0 -14
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/compiler_depend.make +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/compiler_depend.ts +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/depend.make +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/flags.make +0 -12
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/link.txt +0 -1
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-shared.dir/progress.make +0 -3
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/DependInfo.cmake +0 -23
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/build.make +0 -117
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/cmake_clean.cmake +0 -11
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/cmake_clean_target.cmake +0 -3
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/compiler_depend.make +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/compiler_depend.ts +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/depend.make +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/flags.make +0 -12
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/link.txt +0 -2
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/IsoSpec++-static.dir/progress.make +0 -3
- isospecpy-2.3.0.dev1/IsoSpec++/CMakeFiles/progress.marks +0 -1
- isospecpy-2.3.0.dev1/IsoSpec++/cmake_install.cmake +0 -74
- isospecpy-2.3.0.dev1/IsoSpec++/libIsoSpec++.so +0 -0
- isospecpy-2.3.0.dev1/IsoSpecPy.egg-info/SOURCES.txt +0 -53
- isospecpy-2.3.0.dev1/TODO.md +0 -20
- isospecpy-2.3.0.dev1/cmake_install.cmake +0 -66
- isospecpy-2.3.0.dev1/compile_commands.json +0 -14
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/.github/workflows/build_wheels.yml +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CHANGELOG +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeLists.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/doxyfile.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/isospec_logo2_high.svg.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/isospec_logo2_long.svg.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/modules/FindIsoSpec++.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/modules/IsoSpec++Config.cmake.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/modules/pkgconfig/libisospec++.pc.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/outputColors.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/systemUname.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/toolchains/apple-macport-toolchain.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/toolchains/mxe-toolchain.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/toolchains/unix-toolchain.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/CMakeStuff/toolchains/win10-mingw64-toolchain.cmake +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/C++/COMPILING +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/C++/radiolabelling.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/C++/water.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/CMakeLists.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/Python/custom_elements.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/Python/fasta.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/Python/radiolabelling.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/Python/water.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/R/radiolabelling.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Examples/R/water.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/INSTALL +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/CMakeLists.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/CPPLINT.cfg +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/IsoSpecConfig.cmake.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/allocator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/allocator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/btrd.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/conf.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/cwrapper.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/cwrapper.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/dirtyAllocator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/dirtyAllocator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/element_tables.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/element_tables.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/fasta.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/fixedEnvelopes.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/fixedEnvelopes.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/misc.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/mman.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/operators.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/operators.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/platform.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/platform_incl.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/pod_vector.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/python-build.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/summator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpec++/unity-build.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/Advanced.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/Distributions.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/Formulas.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/IsoSpecPy.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/IsoSpecPyOld.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/PeriodicTbl.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/__init__.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/__main__.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/approximations.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/confs_passthrough.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy/isoFFI.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy.egg-info/dependency_links.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy.egg-info/not-zip-safe +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy.egg-info/requires.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecPy.egg-info/top_level.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/.Rbuildignore +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/DESCRIPTION +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/LICENCE +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/NAMESPACE +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/R/IsoSpecR.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/R/RcppExports.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/R/add_custom_isotopes.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/R/data_description.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/R/sysdata.rda +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/data/isotopicData.rda +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/inst/CITATION +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/man/IsoSpecify.Rd +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/man/custom_isotopes_example.Rd +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/man/isotopicData.Rd +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/IsoSpecR_init.c +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/RcppExports.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/Rinterface.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/allocator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/allocator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/btrd.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/conf.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/cwrapper.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/cwrapper.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/dirtyAllocator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/dirtyAllocator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/element_tables.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/element_tables.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/fasta.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/fasta.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/fixedEnvelopes.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/fixedEnvelopes.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/isoMath.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/isoMath.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/isoSpec++.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/isoSpec++.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/marginalTrek++.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/marginalTrek++.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/misc.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/misc.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/mman.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/mman.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/operators.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/operators.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/platform.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/platform_incl.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/pod_vector.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/summator.h +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/src/unity-build.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/tests/testthat/envipat.Rd +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/tests/testthat/test-numerical-stability.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/IsoSpecR/tests/testthat.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/LICENCE +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/MANIFEST.in +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/Makefile +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/README +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/changelog +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/control +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/copyright +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/doxyfile +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++-dev.install +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++-dev.links +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++-dev.manpages +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++-doc.doc-base +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++-doc.install +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++2.install +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/libisospec++2.links +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/patches/0001-Ensure-the-header-files-are-found-in-the-system.patch +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/patches/0002-Remove-the-mtune-native-march-native.patch +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/patches/series +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/repack.sh +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/replace-mathjax-cloudflare-url-local-file.sh +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/rules +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/shlibs.local +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/source/format +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/source_package_build.bash +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/upstream/metadata +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/debian/watch +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/abyss-wass-opt/distances.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/abyss-wass-opt/flows.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/abyss-wass-opt/gradients.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/abyss-wass-opt/parameters.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/abyss-wass-opt/test_spectra.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/isobuild.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/log_vs_natural.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/experiments/threshold-search/exp1.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/CMakeLists.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/doxyfile +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/isospec_logo2_high_versioned.png +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/isospec_logo2_high_versioned.svg +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/isospec_logo2_long_versioned.png +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/isospec_logo2_long_versioned.svg +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/logo2_high.pdf +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/images/logo2_long.pdf +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/logo2_high.pdf +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/man/logo2_long.pdf +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/skbuild/CMakeLists.txt +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C/Makefile +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C/test_IsoOrderedGenerator.c +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C/test_IsoThresholdGenerator.c +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C/test_arrays.c +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/IsoThresholdGenerator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/Makefile +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/empty_iso.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_layered.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_layered_generator.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_ordered.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/from_formula_stochastic.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/layered-test.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/main_test.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/marginal-test.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/mass_range.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/nr_conf.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/tabulator_test.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/test_marginal_ordered.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/titin-test.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/C++/wasserstein_matching.cpp +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_IsoSpecPy.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_all_configs_output.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_estimates.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_iface.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_mass_predict.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/Python/test_sampling.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/correctness/envipat_results.tar.xz +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/correctness/molecules_2_cpp.R +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/cppyy/IsoSpecCppyy/__init__.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/cppyy/cpt.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/cppyy/overhead-cppyy.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tests/cppyy/overhead.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tools/gen.py +0 -0
- {isospecpy-2.3.0.dev1 → isospecpy-2.3.0.dev3}/tools/rcheck.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
OPTFLAGS=-O3 -march=native -mtune=native
|
|
2
2
|
DEBUGFLAGS=-O0 -g -Werror -DISOSPEC_DEBUG -DDEBUG -D_GLIBCXX_DEBUG
|
|
3
|
-
CXXFLAGS=-std=c++
|
|
3
|
+
CXXFLAGS=-std=c++17 -Wall -pedantic -Wextra -Wshadow -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wno-old-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wno-sign-conversion -Wsign-promo -Wswitch-default -Wundef
|
|
4
4
|
SRCFILES=cwrapper.cpp allocator.cpp dirtyAllocator.cpp isoSpec++.cpp isoMath.cpp marginalTrek++.cpp operators.cpp element_tables.cpp misc.cpp mman.cpp fixedEnvelopes.cpp fasta.cpp
|
|
5
5
|
|
|
6
6
|
all: unitylib
|
|
@@ -30,6 +30,11 @@ extern const double aa_elem_probabilities[19];
|
|
|
30
30
|
|
|
31
31
|
extern const int aa_symbol_to_elem_counts[256*6];
|
|
32
32
|
|
|
33
|
+
//! Count elemental composition of an unmodificed sequence of amino acids, resulting in CHNOSSe counts.
|
|
34
|
+
/*!
|
|
35
|
+
WARNING!!! This function does not add the terminating H and OH groups, resulting in a residue backbone skeleton formula.
|
|
36
|
+
If you don't know what that means, you should probably be using parse_fasta_full function.
|
|
37
|
+
*/
|
|
33
38
|
inline void parse_fasta(const char* fasta, int atomCounts[6])
|
|
34
39
|
{
|
|
35
40
|
memset(atomCounts, 0, sizeof(decltype(atomCounts[0]))*6);
|
|
@@ -42,4 +47,21 @@ inline void parse_fasta(const char* fasta, int atomCounts[6])
|
|
|
42
47
|
}
|
|
43
48
|
}
|
|
44
49
|
|
|
50
|
+
//! Turn an input FASTA aminoacid sequence into atom counts, in CHNOSSe order.
|
|
51
|
+
/*!
|
|
52
|
+
Unlike parse_fasta, this function includes the H and OH groups at the N- and C- termini of the skeleton, resulting in a formula of a full (inert) molecule.
|
|
53
|
+
*/
|
|
54
|
+
inline void parse_fasta_full(const char* fasta, int atomCounts[6])
|
|
55
|
+
{
|
|
56
|
+
parse_fasta(fasta, atomCounts);
|
|
57
|
+
// Add terminal water (H2O) for either precursor or fragment.
|
|
58
|
+
const int H_INDEX = 1; // Indexing: 0=C, 1=H, 2=N, 3=O, 4=S, 5=Se
|
|
59
|
+
const int O_INDEX = 3;
|
|
60
|
+
|
|
61
|
+
atomCounts[H_INDEX] += 2;
|
|
62
|
+
atomCounts[O_INDEX] += 1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
45
67
|
} // namespace IsoSpec
|
|
@@ -146,9 +146,8 @@ double InverseLowerIncompleteGamma2(int a, double x)
|
|
|
146
146
|
return s;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
std::random_device
|
|
150
|
-
std::
|
|
151
|
-
std::uniform_real_distribution<double> stdunif(0.0, 1.0);
|
|
149
|
+
thread_local std::mt19937 random_gen(std::random_device{}());
|
|
150
|
+
thread_local std::uniform_real_distribution<double> stdunif(0.0, 1.0);
|
|
152
151
|
|
|
153
152
|
size_t rdvariate_binom(size_t tries, double succ_prob, std::mt19937& rgen)
|
|
154
153
|
{
|
|
@@ -70,8 +70,8 @@ inline double InverseChiSquareCDF2(int k, double x)
|
|
|
70
70
|
return InverseLowerIncompleteGamma2(k, x*tgamma(static_cast<double>(k)/2.0)) * 2.0;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
extern std::mt19937 random_gen;
|
|
74
|
-
extern std::uniform_real_distribution<double> stdunif;
|
|
73
|
+
extern thread_local std::mt19937 random_gen;
|
|
74
|
+
extern thread_local std::uniform_real_distribution<double> stdunif;
|
|
75
75
|
|
|
76
76
|
inline double rdvariate_beta_1_b(double b, std::mt19937& rgen = random_gen)
|
|
77
77
|
{
|
|
@@ -811,33 +811,32 @@ IsoLayeredGeneratorTemplate<MarginalType>::~IsoLayeredGeneratorTemplate()
|
|
|
811
811
|
template class IsoLayeredGeneratorTemplate<LayeredMarginal>;
|
|
812
812
|
//template class IsoLayeredGeneratorTemplate<PrecalculatedMarginal>;
|
|
813
813
|
//template class IsoLayeredGeneratorTemplate<MarginalTrek>;
|
|
814
|
+
template class IsoLayeredGeneratorTemplate<SingleAtomMarginal<true>>;
|
|
814
815
|
|
|
815
816
|
/*
|
|
816
817
|
* ------------------------------------------------------------------------------------------------------------------------
|
|
817
818
|
*/
|
|
818
819
|
|
|
819
|
-
|
|
820
|
-
|
|
820
|
+
template<typename MarginalType>
|
|
821
|
+
IsoOrderedGeneratorTemplate<MarginalType>::IsoOrderedGeneratorTemplate(Iso&& iso, int _tabSize, int _hashSize) :
|
|
821
822
|
IsoGenerator(std::move(iso), false), allocator(dimNumber, _tabSize)
|
|
822
823
|
{
|
|
823
824
|
partialLProbs = ¤tLProb;
|
|
824
825
|
partialMasses = ¤tMass;
|
|
825
826
|
partialProbs = ¤tProb;
|
|
826
827
|
|
|
827
|
-
marginalResults = new
|
|
828
|
+
marginalResults = new MarginalType*[dimNumber];
|
|
828
829
|
|
|
829
830
|
for(int i = 0; i < dimNumber; i++)
|
|
830
|
-
marginalResults[i] = new
|
|
831
|
+
marginalResults[i] = new MarginalType(std::move(*(marginals[i])), _tabSize, _hashSize);
|
|
831
832
|
|
|
832
833
|
logProbs = new const pod_vector<double>*[dimNumber];
|
|
833
834
|
masses = new const pod_vector<double>*[dimNumber];
|
|
834
|
-
marginalConfs = new const pod_vector<int*>*[dimNumber];
|
|
835
835
|
|
|
836
836
|
for(int i = 0; i < dimNumber; i++)
|
|
837
837
|
{
|
|
838
838
|
masses[i] = &marginalResults[i]->conf_masses();
|
|
839
839
|
logProbs[i] = &marginalResults[i]->conf_lprobs();
|
|
840
|
-
marginalConfs[i] = &marginalResults[i]->confs();
|
|
841
840
|
}
|
|
842
841
|
|
|
843
842
|
topConf = allocator.newConf();
|
|
@@ -857,20 +856,19 @@ IsoGenerator(std::move(iso), false), allocator(dimNumber, _tabSize)
|
|
|
857
856
|
pq.push(topConf);
|
|
858
857
|
}
|
|
859
858
|
|
|
860
|
-
|
|
861
|
-
|
|
859
|
+
template<typename MarginalType>
|
|
860
|
+
IsoOrderedGeneratorTemplate<MarginalType>::~IsoOrderedGeneratorTemplate()
|
|
862
861
|
{
|
|
863
|
-
dealloc_table<
|
|
862
|
+
dealloc_table<MarginalType*>(marginalResults, dimNumber);
|
|
864
863
|
delete[] logProbs;
|
|
865
864
|
delete[] masses;
|
|
866
|
-
delete[] marginalConfs;
|
|
867
865
|
partialLProbs = nullptr;
|
|
868
866
|
partialMasses = nullptr;
|
|
869
867
|
partialProbs = nullptr;
|
|
870
868
|
}
|
|
871
869
|
|
|
872
|
-
|
|
873
|
-
bool
|
|
870
|
+
template<typename MarginalType>
|
|
871
|
+
bool IsoOrderedGeneratorTemplate<MarginalType>::advanceToNextConfiguration()
|
|
874
872
|
{
|
|
875
873
|
if(pq.size() < 1)
|
|
876
874
|
return false;
|
|
@@ -920,24 +918,30 @@ bool IsoOrderedGenerator::advanceToNextConfiguration()
|
|
|
920
918
|
return true;
|
|
921
919
|
}
|
|
922
920
|
|
|
921
|
+
template class IsoOrderedGeneratorTemplate<MarginalTrek>;
|
|
922
|
+
template class IsoOrderedGeneratorTemplate<SingleAtomMarginal<false>>;
|
|
923
|
+
|
|
923
924
|
|
|
924
925
|
/*
|
|
925
926
|
* ---------------------------------------------------------------------------------------------------
|
|
926
927
|
*/
|
|
927
928
|
|
|
928
929
|
template<typename IsoType>
|
|
929
|
-
IsoStochasticGeneratorTemplate<IsoType>::IsoStochasticGeneratorTemplate(Iso&& iso, size_t no_molecules, double _precision, double _beta_bias) :
|
|
930
|
+
IsoStochasticGeneratorTemplate<IsoType>::IsoStochasticGeneratorTemplate(Iso&& iso, size_t no_molecules, double _precision, double _beta_bias, std::mt19937& _rng) :
|
|
930
931
|
IsoGenerator(std::move(iso)),
|
|
931
932
|
ILG(std::move(*this)),
|
|
932
933
|
to_sample_left(no_molecules),
|
|
933
934
|
precision(_precision),
|
|
934
935
|
beta_bias(_beta_bias),
|
|
935
936
|
confs_prob(0.0),
|
|
936
|
-
chasing_prob(0.0)
|
|
937
|
+
chasing_prob(0.0),
|
|
938
|
+
rdvariate_gen(_rng)
|
|
937
939
|
{}
|
|
938
940
|
|
|
939
941
|
template class IsoStochasticGeneratorTemplate<IsoLayeredGeneratorTemplate<LayeredMarginal>>;
|
|
940
|
-
template class IsoStochasticGeneratorTemplate<
|
|
942
|
+
template class IsoStochasticGeneratorTemplate<IsoLayeredGeneratorTemplate<SingleAtomMarginal<true>>>;
|
|
943
|
+
template class IsoStochasticGeneratorTemplate<IsoOrderedGeneratorTemplate<MarginalTrek>>;
|
|
944
|
+
template class IsoStochasticGeneratorTemplate<IsoOrderedGeneratorTemplate<SingleAtomMarginal<false>>>;
|
|
941
945
|
//template class IsoStochasticGeneratorTemplate<IsoThresholdGenerator>;
|
|
942
946
|
|
|
943
947
|
/*
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include <limits>
|
|
22
22
|
#include <string>
|
|
23
23
|
#include <vector>
|
|
24
|
+
#include <algorithm>
|
|
24
25
|
#include "platform.h"
|
|
25
26
|
#include "dirtyAllocator.h"
|
|
26
27
|
#include "summator.h"
|
|
@@ -233,24 +234,24 @@ class ISOSPEC_EXPORT_SYMBOL IsoGenerator : public Iso
|
|
|
233
234
|
This algorithm take O(N*log(N)) to compute the N isotopologues because of using the Priority Queue data structure.
|
|
234
235
|
Obtaining the N isotopologues can be achieved in O(N) if they are not required to be spit out in the descending order.
|
|
235
236
|
*/
|
|
236
|
-
|
|
237
|
+
template<typename MarginalType>
|
|
238
|
+
class ISOSPEC_EXPORT_SYMBOL IsoOrderedGeneratorTemplate: public IsoGenerator
|
|
237
239
|
{
|
|
238
240
|
private:
|
|
239
|
-
|
|
241
|
+
MarginalType** marginalResults; /*!< Table of pointers to marginal distributions of subisotopologues. */
|
|
240
242
|
std::priority_queue<void*, pod_vector<void*>, ConfOrder> pq; /*!< The priority queue used to generate isotopologues ordered by descending probability. */
|
|
241
243
|
void* topConf; /*!< Most probable configuration. */
|
|
242
244
|
DirtyAllocator allocator; /*!< Structure used for alocating memory for isotopologues. */
|
|
243
245
|
const pod_vector<double>** logProbs; /*!< Obtained log-probabilities. */
|
|
244
246
|
const pod_vector<double>** masses; /*!< Obtained masses. */
|
|
245
|
-
const pod_vector<Conf>** marginalConfs; /*!< Obtained counts of isotopes. */
|
|
246
247
|
double currentLProb; /*!< The log-probability of the current isotopologue. */
|
|
247
248
|
double currentMass; /*!< The mass of the current isotopologue. */
|
|
248
249
|
double currentProb; /*!< The probability of the current isotopologue. */
|
|
249
250
|
int ccount;
|
|
250
251
|
|
|
251
252
|
public:
|
|
252
|
-
|
|
253
|
-
|
|
253
|
+
IsoOrderedGeneratorTemplate(const IsoOrderedGeneratorTemplate& other) = delete;
|
|
254
|
+
IsoOrderedGeneratorTemplate& operator=(const IsoOrderedGeneratorTemplate& other) = delete;
|
|
254
255
|
|
|
255
256
|
bool advanceToNextConfiguration() override final;
|
|
256
257
|
|
|
@@ -261,29 +262,49 @@ class ISOSPEC_EXPORT_SYMBOL IsoOrderedGenerator: public IsoGenerator
|
|
|
261
262
|
*/
|
|
262
263
|
inline void get_conf_signature(int* space) const override final
|
|
263
264
|
{
|
|
264
|
-
|
|
265
|
+
if constexpr (std::is_same<MarginalType, MarginalTrek>::value)
|
|
266
|
+
{
|
|
267
|
+
int* c = getConf(topConf);
|
|
265
268
|
|
|
266
|
-
|
|
267
|
-
|
|
269
|
+
if (ccount >= 0)
|
|
270
|
+
c[ccount]--;
|
|
268
271
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
for(int ii = 0; ii < dimNumber; ii++)
|
|
273
|
+
{
|
|
274
|
+
memcpy(space, marginalResults[ii]->confs()[c[ii]], isotopeNumbers[ii]*sizeof(int));
|
|
275
|
+
space += isotopeNumbers[ii];
|
|
276
|
+
}
|
|
274
277
|
|
|
275
|
-
|
|
276
|
-
|
|
278
|
+
if (ccount >= 0)
|
|
279
|
+
c[ccount]++;
|
|
280
|
+
}
|
|
281
|
+
else
|
|
282
|
+
throw std::runtime_error("IsoOrderedGeneratorTemplate::get_conf_signature() called on a non-MarginalTrek generator. This is not supported yet.");
|
|
277
283
|
};
|
|
278
284
|
|
|
279
285
|
//! The move-contstructor.
|
|
280
|
-
|
|
286
|
+
IsoOrderedGeneratorTemplate(Iso&& iso, int _tabSize = 1000, int _hashSize = 1000); // NOLINT(runtime/explicit) - constructor deliberately left to be used as a conversion
|
|
281
287
|
|
|
282
288
|
//! Destructor.
|
|
283
|
-
virtual ~
|
|
284
|
-
|
|
289
|
+
virtual ~IsoOrderedGeneratorTemplate();
|
|
290
|
+
|
|
291
|
+
inline void get_conf_by_indexes(int* space)
|
|
292
|
+
{
|
|
293
|
+
if constexpr (std::is_same<MarginalType, SingleAtomMarginal<false>>::value)
|
|
294
|
+
{
|
|
295
|
+
if(dimNumber == 0)
|
|
296
|
+
return;
|
|
297
|
+
|
|
298
|
+
int* c = getConf(topConf);
|
|
299
|
+
space[0] = std::max(c[0]-1, 0);
|
|
285
300
|
|
|
301
|
+
for(int ii = 1; ii < dimNumber; ii++)
|
|
302
|
+
space[ii] = c[ii];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
};
|
|
286
306
|
|
|
307
|
+
using IsoOrderedGenerator = IsoOrderedGeneratorTemplate<MarginalTrek>;
|
|
287
308
|
|
|
288
309
|
|
|
289
310
|
//! The generator of isotopologues above a given threshold value.
|
|
@@ -533,6 +554,29 @@ class ISOSPEC_EXPORT_SYMBOL IsoLayeredGeneratorTemplate : public IsoGenerator
|
|
|
533
554
|
|
|
534
555
|
bool nextLayer(double offset);
|
|
535
556
|
|
|
557
|
+
void get_conf_by_indexes(int* space) const
|
|
558
|
+
{
|
|
559
|
+
if constexpr (std::is_same<MarginalType, SingleAtomMarginal<true>>::value)
|
|
560
|
+
{
|
|
561
|
+
counter[0] = lProbs_ptr - lProbs_ptr_start;
|
|
562
|
+
if(marginalOrder != nullptr)
|
|
563
|
+
{
|
|
564
|
+
for(int ii = 0; ii < dimNumber; ii++)
|
|
565
|
+
{
|
|
566
|
+
int jj = marginalOrder[ii];
|
|
567
|
+
space[ii] = marginalResultsUnsorted[ii]->get_original_position(counter[jj]);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
else
|
|
571
|
+
{
|
|
572
|
+
for(int ii = 0; ii < dimNumber; ii++)
|
|
573
|
+
space[ii] = marginalResultsUnsorted[ii]->get_original_position(counter[ii]);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
else
|
|
577
|
+
throw std::runtime_error("IsoLayeredGeneratorTemplate::get_conf_by_indexes() called on a non-SingleAtomMarginal generator. This is not supported yet.");
|
|
578
|
+
}
|
|
579
|
+
|
|
536
580
|
private:
|
|
537
581
|
bool carry();
|
|
538
582
|
};
|
|
@@ -548,9 +592,10 @@ class IsoStochasticGeneratorTemplate : public IsoGenerator
|
|
|
548
592
|
double confs_prob;
|
|
549
593
|
double chasing_prob;
|
|
550
594
|
size_t current_count;
|
|
595
|
+
std::mt19937& rdvariate_gen; /*!< The random number generator used to generate random numbers. */
|
|
551
596
|
|
|
552
597
|
public:
|
|
553
|
-
IsoStochasticGeneratorTemplate(Iso&& iso, size_t no_molecules, double precision = 0.9999, double beta_bias = 5.0);
|
|
598
|
+
IsoStochasticGeneratorTemplate(Iso&& iso, size_t no_molecules, double precision = 0.9999, double beta_bias = 5.0, std::mt19937& rdvariate_gen = random_gen);
|
|
554
599
|
|
|
555
600
|
ISOSPEC_FORCE_INLINE size_t count() const { return current_count; }
|
|
556
601
|
|
|
@@ -636,6 +681,11 @@ class IsoStochasticGeneratorTemplate : public IsoGenerator
|
|
|
636
681
|
}
|
|
637
682
|
};
|
|
638
683
|
}
|
|
684
|
+
|
|
685
|
+
ISOSPEC_FORCE_INLINE void get_indexes(int* space)
|
|
686
|
+
{
|
|
687
|
+
ILG.get_conf_by_indexes(space);
|
|
688
|
+
}
|
|
639
689
|
};
|
|
640
690
|
|
|
641
691
|
using IsoStochasticGenerator = IsoStochasticGeneratorTemplate<IsoLayeredGenerator>;
|
|
@@ -695,4 +695,46 @@ double LayeredMarginal::get_max_mass() const
|
|
|
695
695
|
return ret;
|
|
696
696
|
}
|
|
697
697
|
|
|
698
|
+
/* =============================================================== */
|
|
699
|
+
|
|
700
|
+
template<bool add_guards>
|
|
701
|
+
SingleAtomMarginal<add_guards>::SingleAtomMarginal(Marginal&& m, int, int)
|
|
702
|
+
: Marginal(std::move(m)), current_threshold(1.0), extended_to_idx(0)
|
|
703
|
+
{
|
|
704
|
+
original_indexes.resize(isotopeNo);
|
|
705
|
+
for(size_t ii = 0; ii < isotopeNo; ++ii)
|
|
706
|
+
original_indexes[ii] = ii;
|
|
707
|
+
|
|
708
|
+
std::sort(original_indexes.begin(), original_indexes.end(), [&](int a, int b) {
|
|
709
|
+
return atom_lProbs[a] > atom_lProbs[b];
|
|
710
|
+
});
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
masses.reserve(isotopeNo);
|
|
714
|
+
probs.reserve(isotopeNo);
|
|
715
|
+
|
|
716
|
+
if constexpr (add_guards)
|
|
717
|
+
{
|
|
718
|
+
lProbs.reserve(isotopeNo+2);
|
|
719
|
+
lProbs.push_back(std::numeric_limits<double>::infinity());
|
|
720
|
+
}
|
|
721
|
+
else
|
|
722
|
+
lProbs.reserve(isotopeNo);
|
|
723
|
+
|
|
724
|
+
for(size_t idx : original_indexes)
|
|
725
|
+
{
|
|
726
|
+
lProbs.push_back(atom_lProbs[idx]);
|
|
727
|
+
probs.push_back(exp(lProbs.back()));
|
|
728
|
+
masses.push_back(atom_masses[idx]);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
if constexpr (add_guards)
|
|
732
|
+
{
|
|
733
|
+
lProbs.push_back(-std::numeric_limits<double>::infinity());
|
|
734
|
+
guarded_lProbs = lProbs.data()+1;
|
|
735
|
+
}
|
|
736
|
+
else
|
|
737
|
+
guarded_lProbs = lProbs.data();
|
|
738
|
+
}
|
|
739
|
+
|
|
698
740
|
} // namespace IsoSpec
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include <vector>
|
|
22
22
|
#include <functional>
|
|
23
23
|
#include <utility>
|
|
24
|
+
#include <memory>
|
|
24
25
|
#include "conf.h"
|
|
25
26
|
#include "allocator.h"
|
|
26
27
|
#include "operators.h"
|
|
@@ -409,8 +410,164 @@ class LayeredMarginal : public Marginal
|
|
|
409
410
|
\return The log-probability of a/the most probable subisotopologue.
|
|
410
411
|
*/
|
|
411
412
|
inline double getModeLProb() const { return mode_lprob; }
|
|
413
|
+
const pod_vector<double>& conf_lprobs() const { return lProbs; }
|
|
414
|
+
const pod_vector<double>& conf_masses() const { return masses; }
|
|
415
|
+
|
|
412
416
|
};
|
|
413
417
|
|
|
414
418
|
|
|
415
419
|
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
template <bool add_guards>
|
|
426
|
+
class SingleAtomMarginal : public Marginal
|
|
427
|
+
{
|
|
428
|
+
private:
|
|
429
|
+
double current_threshold;
|
|
430
|
+
pod_vector<double> lProbs;
|
|
431
|
+
pod_vector<double> probs;
|
|
432
|
+
pod_vector<double> masses;
|
|
433
|
+
pod_vector<size_t> original_indexes;
|
|
434
|
+
double* guarded_lProbs;
|
|
435
|
+
int extended_to_idx;
|
|
436
|
+
|
|
437
|
+
public:
|
|
438
|
+
//! Move constructor: specializes the Marginal class.
|
|
439
|
+
/*!
|
|
440
|
+
*/
|
|
441
|
+
SingleAtomMarginal(Marginal&& m, int tabSize = 1000, int hashSize = 1000); // NOLINT(runtime/explicit) - constructor deliberately left usable as a conversion
|
|
442
|
+
|
|
443
|
+
SingleAtomMarginal(const SingleAtomMarginal& other) = delete;
|
|
444
|
+
SingleAtomMarginal& operator=(const SingleAtomMarginal& other) = delete;
|
|
445
|
+
|
|
446
|
+
//! Extend the set of computed subisotopologues to those above the new threshold.
|
|
447
|
+
/*!
|
|
448
|
+
\param new_threshold The new log-probability limiting the subisotopologues from below.
|
|
449
|
+
\return Returns false, if there are no fringe-subisotopologues (subisotopologues that were neighbours of the previously calculated subisotopologues, with log-probability below the previous threshold).
|
|
450
|
+
*/
|
|
451
|
+
bool extend(double new_threshold, [[maybe_unused]] bool do_sort = true) {
|
|
452
|
+
static_assert(add_guards, "SingleAtomMarginal::extend: add_guards must be true");
|
|
453
|
+
current_threshold = new_threshold;
|
|
454
|
+
bool extended = false;
|
|
455
|
+
while(guarded_lProbs[extended_to_idx] >= current_threshold)
|
|
456
|
+
{
|
|
457
|
+
extended_to_idx++;
|
|
458
|
+
extended = true;
|
|
459
|
+
}
|
|
460
|
+
return extended || (guarded_lProbs[extended_to_idx] != -std::numeric_limits<double>::infinity());
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
//! get the log-probability of the idx-th subisotopologue, see details in @ref PrecalculatedMarginal::get_lProb.
|
|
464
|
+
inline double get_lProb(int idx) const { return guarded_lProbs[idx]; } // access to idx == -1 is valid and gives a guardian of +inf
|
|
465
|
+
|
|
466
|
+
//! get the probability of the idx-th subisotopologue, see details in @ref PrecalculatedMarginal::get_eProb.
|
|
467
|
+
inline double get_prob(int idx) const { return probs[idx]; }
|
|
468
|
+
|
|
469
|
+
//! get the mass of the idx-th subisotopologue, see details in @ref PrecalculatedMarginal::get_mass.
|
|
470
|
+
inline double get_mass(int idx) const { return masses[idx]; }
|
|
471
|
+
|
|
472
|
+
//! get the pointer to lProbs array. Accessing index -1 is legal and returns a guardian of -inf. Warning: The pointer gets invalidated on calls to extend()
|
|
473
|
+
inline const double* get_lProbs_ptr() const { return lProbs.data()+1; }
|
|
474
|
+
|
|
475
|
+
//! get the counts of isotopes that define the subisotopologue, see details in @ref PrecalculatedMarginal::get_conf.
|
|
476
|
+
inline const Conf& get_conf([[maybe_unused]] int idx) const { throw std::logic_error("SingleAtomMarginal.get_conf: not implemented"); /*return configurations[idx];*/ }
|
|
477
|
+
|
|
478
|
+
//! Get the number of precomputed subisotopologues, see details in @ref PrecalculatedMarginal::get_no_confs.
|
|
479
|
+
inline unsigned int get_no_confs() const {
|
|
480
|
+
if constexpr(add_guards)
|
|
481
|
+
return extended_to_idx;
|
|
482
|
+
else
|
|
483
|
+
return static_cast<unsigned int>(original_indexes.size());}
|
|
484
|
+
|
|
485
|
+
//! Get the minimal mass in current layer
|
|
486
|
+
inline double get_min_mass() const { throw std::logic_error("SingleAtomMarginal.get_min_mass: not implemented"); };
|
|
487
|
+
|
|
488
|
+
//! Get the maximal mass in current layer
|
|
489
|
+
double get_max_mass() const { throw std::logic_error("SingleAtomMarginal.get_max_mass: not implemented"); };
|
|
490
|
+
|
|
491
|
+
//! Get the log-probability of the mode subisotopologue.
|
|
492
|
+
/*!
|
|
493
|
+
\return The log-probability of a/the most probable subisotopologue.
|
|
494
|
+
*/
|
|
495
|
+
inline double getModeLProb() const { return mode_lprob; }
|
|
496
|
+
|
|
497
|
+
inline bool probeConfigurationIdx(int idx)
|
|
498
|
+
{
|
|
499
|
+
return idx < static_cast<int>(original_indexes.size());
|
|
500
|
+
}
|
|
501
|
+
const pod_vector<double>& conf_lprobs() const { return lProbs; }
|
|
502
|
+
const pod_vector<double>& conf_masses() const { return masses; }
|
|
503
|
+
|
|
504
|
+
int get_original_position(int idx) const
|
|
505
|
+
{
|
|
506
|
+
#ifdef ISOSPEC_DEBUG
|
|
507
|
+
if (idx < 0 || static_cast<size_t>(idx) >= original_indexes.size())
|
|
508
|
+
throw std::out_of_range("Index out of range in SingleAtomMarginal::et_original_position");
|
|
509
|
+
#endif
|
|
510
|
+
return original_indexes[idx];
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
template <typename T>
|
|
518
|
+
class LoggingMarginal : public Marginal
|
|
519
|
+
{
|
|
520
|
+
private:
|
|
521
|
+
std::unique_ptr<T> real_marginal;
|
|
522
|
+
public:
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
LoggingMarginal(T&& m) : Marginal(m), real_marginal(std::make_unique(std::move(m))) {}
|
|
526
|
+
LoggingMarginal(T&& m, int tabSize, int hashSize)
|
|
527
|
+
: Marginal(m), real_marginal(std::make_unique<T>(std::move(m), tabSize, hashSize)) {}
|
|
528
|
+
|
|
529
|
+
LoggingMarginal(const LoggingMarginal& other) = delete;
|
|
530
|
+
LoggingMarginal& operator=(const LoggingMarginal& other) = delete;
|
|
531
|
+
|
|
532
|
+
inline double getModeLProb() const { auto ret = real_marginal->getModeLProb(); std::cout << "LoggingMarginal::getModeLProb: " << ret << std::endl; return ret; }
|
|
533
|
+
inline double get_lProb(int idx) const { auto ret = real_marginal->get_lProb(idx); std::cout << "LoggingMarginal::get_lProb: " << idx << " " << ret << std::endl; return ret; }
|
|
534
|
+
inline double get_prob(int idx) const { auto ret = real_marginal->get_prob(idx); std::cout << "LoggingMarginal::get_prob: " << idx << " " << ret << std::endl; return ret; }
|
|
535
|
+
inline double get_mass(int idx) const { auto ret = real_marginal->get_mass(idx); std::cout << "LoggingMarginal::get_mass: " << idx << " " << ret << std::endl; return ret; }
|
|
536
|
+
inline const double* get_lProbs_ptr() const { auto ret = real_marginal->get_lProbs_ptr(); std::cout << "LoggingMarginal::get_lProbs_ptr: "; printArray<double>(ret, real_marginal->get_no_confs()); return ret; }
|
|
537
|
+
inline const Conf& get_conf(int idx) const { auto ret = real_marginal->get_conf(idx); std::cout << "LoggingMarginal::get_conf: " << idx << std::endl; return ret; }
|
|
538
|
+
inline unsigned int get_no_confs() const { auto ret = real_marginal->get_no_confs(); std::cout << "LoggingMarginal::get_no_confs: " << ret << std::endl; return ret; }
|
|
539
|
+
inline bool probeConfigurationIdx(int idx) { auto ret = real_marginal->probeConfigurationIdx(idx); std::cout << "LoggingMarginal::probeConfigurationIdx: " << idx << " " << ret << std::endl; return ret; }
|
|
540
|
+
inline double get_min_mass() const { auto ret = real_marginal->get_min_mass(); std::cout << "LoggingMarginal::get_min_mass: " << ret << std::endl; return ret; }
|
|
541
|
+
inline double get_max_mass() const { auto ret = real_marginal->get_max_mass(); std::cout << "LoggingMarginal::get_max_mass: " << ret << std::endl; return ret; }
|
|
542
|
+
inline double getModeMass() const { auto ret = real_marginal->getModeMass(); std::cout << "LoggingMarginal::getModeMass: " << ret << std::endl; return ret; }
|
|
543
|
+
inline double getLightestConfMass() const { auto ret = real_marginal->getLightestConfMass(); std::cout << "LoggingMarginal::getLightestConfMass: " << ret << std::endl; return ret; }
|
|
544
|
+
inline double getHeaviestConfMass() const { auto ret = real_marginal->getHeaviestConfMass(); std::cout << "LoggingMarginal::getHeaviestConfMass: " << ret << std::endl; return ret; }
|
|
545
|
+
inline double getMonoisotopicConfMass() const { auto ret = real_marginal->getMonoisotopicConfMass(); std::cout << "LoggingMarginal::getMonoisotopicConfMass: " << ret << std::endl; return ret; }
|
|
546
|
+
inline double getAtomAverageMass() const { auto ret = real_marginal->getAtomAverageMass(); std::cout << "LoggingMarginal::getAtomAverageMass: " << ret << std::endl; return ret; }
|
|
547
|
+
inline double variance() const { auto ret = real_marginal->variance(); std::cout << "LoggingMarginal::variance: " << ret << std::endl; return ret; }
|
|
548
|
+
inline double getTheoreticalAverageMass() const { auto ret = real_marginal->getTheoreticalAverageMass(); std::cout << "LoggingMarginal::getTheoreticalAverageMass: " << ret << std::endl; return ret; }
|
|
549
|
+
inline double getLogSizeEstimate(double logEllipsoidRadius) const
|
|
550
|
+
{
|
|
551
|
+
auto ret = real_marginal->getLogSizeEstimate(logEllipsoidRadius);
|
|
552
|
+
std::cout << "LoggingMarginal::getLogSizeEstimate: " << logEllipsoidRadius << " " << ret << std::endl;
|
|
553
|
+
return ret;
|
|
554
|
+
}
|
|
555
|
+
inline void ensureModeConf() { real_marginal->ensureModeConf(); std::cout << "LoggingMarginal::ensureModeConf" << std::endl; }
|
|
556
|
+
inline const pod_vector<double>& conf_lprobs() const { return real_marginal->conf_lprobs(); }
|
|
557
|
+
inline const pod_vector<double>& conf_masses() const { return real_marginal->conf_masses(); }
|
|
558
|
+
inline int get_original_position(int idx) const { return real_marginal->get_original_position(idx); }
|
|
559
|
+
inline int get_isotopeNo() const { return real_marginal->get_isotopeNo(); }
|
|
560
|
+
inline const double* get_lProbs() const { return real_marginal->get_lProbs(); }
|
|
561
|
+
inline const double* get_masses() const { return real_marginal->get_masses(); }
|
|
562
|
+
inline const double* get_atom_lProbs() const { return real_marginal->get_lProbs(); }
|
|
563
|
+
inline const double* get_atom_masses() const { return real_marginal->get_masses(); }
|
|
564
|
+
inline bool extend(double new_threshold, bool do_sort = true)
|
|
565
|
+
{
|
|
566
|
+
auto ret = real_marginal->extend(new_threshold, do_sort);
|
|
567
|
+
std::cout << "LoggingMarginal::extend: " << new_threshold << " " << ret << std::endl;
|
|
568
|
+
return ret;
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
|
|
572
|
+
|
|
416
573
|
} // namespace IsoSpec
|
|
@@ -96,6 +96,11 @@ template<typename T> void printVector(const std::vector<T>& vec)
|
|
|
96
96
|
printArray<T>(vec.data(), vec.size());
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
template<typename T> void printVector(const pod_vector<T>& vec)
|
|
100
|
+
{
|
|
101
|
+
printArray<T>(vec.data(), vec.size());
|
|
102
|
+
}
|
|
103
|
+
|
|
99
104
|
template<typename T> void printOffsets(const T** array, int size, const T* offset, const char* prefix = "")
|
|
100
105
|
{
|
|
101
106
|
if (strlen(prefix) > 0)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: IsoSpecPy
|
|
3
3
|
Version: 2.2.3
|
|
4
4
|
Summary: Python interface to IsoSpec++ isotopic envelope calculator library
|
|
@@ -31,5 +31,15 @@ Requires-Dist: cffi
|
|
|
31
31
|
Provides-Extra: test
|
|
32
32
|
Requires-Dist: pytest; extra == "test"
|
|
33
33
|
Requires-Dist: numpy; extra == "test"
|
|
34
|
+
Dynamic: author
|
|
35
|
+
Dynamic: author-email
|
|
36
|
+
Dynamic: classifier
|
|
37
|
+
Dynamic: description
|
|
38
|
+
Dynamic: home-page
|
|
39
|
+
Dynamic: keywords
|
|
40
|
+
Dynamic: license
|
|
41
|
+
Dynamic: provides-extra
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: summary
|
|
34
44
|
|
|
35
45
|
Python interface to IsoSpec++ isotopic envelope calculator library
|