anndataoom-fast 0.1.0__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.
Files changed (104) hide show
  1. anndataoom_fast-0.1.0/.gitignore +5 -0
  2. anndataoom_fast-0.1.0/CMakeLists.txt +106 -0
  3. anndataoom_fast-0.1.0/LICENSE +686 -0
  4. anndataoom_fast-0.1.0/PKG-INFO +119 -0
  5. anndataoom_fast-0.1.0/README.md +91 -0
  6. anndataoom_fast-0.1.0/pyproject.toml +64 -0
  7. anndataoom_fast-0.1.0/python/anndataoom_fast/__init__.py +82 -0
  8. anndataoom_fast-0.1.0/python/anndataoom_fast/_config.py +17 -0
  9. anndataoom_fast-0.1.0/python/anndataoom_fast/_embed.py +177 -0
  10. anndataoom_fast-0.1.0/python/anndataoom_fast/_h5.py +152 -0
  11. anndataoom_fast-0.1.0/python/anndataoom_fast/_leiden.py +254 -0
  12. anndataoom_fast-0.1.0/python/anndataoom_fast/_markers.py +88 -0
  13. anndataoom_fast-0.1.0/python/anndataoom_fast/_neighbors.py +105 -0
  14. anndataoom_fast-0.1.0/python/anndataoom_fast/_omicverse.py +257 -0
  15. anndataoom_fast-0.1.0/python/anndataoom_fast/_ops.py +378 -0
  16. anndataoom_fast-0.1.0/python/anndataoom_fast/_svd.py +56 -0
  17. anndataoom_fast-0.1.0/python/anndataoom_fast/_umap.py +210 -0
  18. anndataoom_fast-0.1.0/python/anndataoom_fast/_view.py +211 -0
  19. anndataoom_fast-0.1.0/python/anndataoom_fast/memory.py +206 -0
  20. anndataoom_fast-0.1.0/python/anndataoom_fast/oom.py +43 -0
  21. anndataoom_fast-0.1.0/src/cpp/bindings.cpp +411 -0
  22. anndataoom_fast-0.1.0/src/cpp/embed/bindings_embed.cpp +79 -0
  23. anndataoom_fast-0.1.0/src/cpp/embed/embed.cpp +599 -0
  24. anndataoom_fast-0.1.0/src/cpp/embed/embed.hpp +54 -0
  25. anndataoom_fast-0.1.0/src/cpp/embed/embed_kernels.inc +233 -0
  26. anndataoom_fast-0.1.0/src/cpp/engine.hpp +222 -0
  27. anndataoom_fast-0.1.0/src/cpp/fuzzy.cpp +197 -0
  28. anndataoom_fast-0.1.0/src/cpp/fuzzy.hpp +27 -0
  29. anndataoom_fast-0.1.0/src/cpp/groupstats.cpp +56 -0
  30. anndataoom_fast-0.1.0/src/cpp/groupstats.hpp +24 -0
  31. anndataoom_fast-0.1.0/src/cpp/kernels.cpp +618 -0
  32. anndataoom_fast-0.1.0/src/cpp/kernels.hpp +143 -0
  33. anndataoom_fast-0.1.0/src/cpp/knn.cpp +449 -0
  34. anndataoom_fast-0.1.0/src/cpp/knn.hpp +44 -0
  35. anndataoom_fast-0.1.0/src/cpp/leiden/bindings_leiden.cpp +121 -0
  36. anndataoom_fast-0.1.0/src/cpp/leiden/leiden.cpp +1294 -0
  37. anndataoom_fast-0.1.0/src/cpp/leiden/leiden.hpp +86 -0
  38. anndataoom_fast-0.1.0/src/cpp/leiden_brisc/bindings_leiden_brisc.cpp +115 -0
  39. anndataoom_fast-0.1.0/src/cpp/leiden_brisc/leiden_brisc.cpp +684 -0
  40. anndataoom_fast-0.1.0/src/cpp/leiden_brisc/leiden_brisc.hpp +48 -0
  41. anndataoom_fast-0.1.0/src/cpp/reader.cpp +275 -0
  42. anndataoom_fast-0.1.0/src/cpp/reader.hpp +97 -0
  43. anndataoom_fast-0.1.0/src/cpp/umap.cpp +247 -0
  44. anndataoom_fast-0.1.0/src/cpp/umap.hpp +50 -0
  45. anndataoom_fast-0.1.0/tests/_brisc_graphs.py +96 -0
  46. anndataoom_fast-0.1.0/tests/data/brisc_embed_fixtures.npz +0 -0
  47. anndataoom_fast-0.1.0/tests/data/brisc_leiden_fixtures.npz +0 -0
  48. anndataoom_fast-0.1.0/tests/data/localmap_portable.npz +0 -0
  49. anndataoom_fast-0.1.0/tests/data/make_brisc_fixtures.py +59 -0
  50. anndataoom_fast-0.1.0/tests/data/make_embed_fixtures.py +79 -0
  51. anndataoom_fast-0.1.0/tests/data/make_localmap_portable.py +15 -0
  52. anndataoom_fast-0.1.0/tests/test_embed.py +164 -0
  53. anndataoom_fast-0.1.0/tests/test_graph.py +120 -0
  54. anndataoom_fast-0.1.0/tests/test_kernels.py +207 -0
  55. anndataoom_fast-0.1.0/tests/test_leiden.py +199 -0
  56. anndataoom_fast-0.1.0/tests/test_leiden_brisc.py +136 -0
  57. anndataoom_fast-0.1.0/third_party/libdeflate/.cirrus.yml +11 -0
  58. anndataoom_fast-0.1.0/third_party/libdeflate/.gitignore +5 -0
  59. anndataoom_fast-0.1.0/third_party/libdeflate/CMakeLists.txt +369 -0
  60. anndataoom_fast-0.1.0/third_party/libdeflate/COPYING +22 -0
  61. anndataoom_fast-0.1.0/third_party/libdeflate/NEWS.md +525 -0
  62. anndataoom_fast-0.1.0/third_party/libdeflate/README.md +243 -0
  63. anndataoom_fast-0.1.0/third_party/libdeflate/common_defs.h +748 -0
  64. anndataoom_fast-0.1.0/third_party/libdeflate/lib/adler32.c +162 -0
  65. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/adler32_impl.h +365 -0
  66. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/cpu_features.c +230 -0
  67. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/cpu_features.h +214 -0
  68. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/crc32_impl.h +594 -0
  69. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/crc32_pmull_helpers.h +156 -0
  70. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/crc32_pmull_wide.h +226 -0
  71. anndataoom_fast-0.1.0/third_party/libdeflate/lib/arm/matchfinder_impl.h +78 -0
  72. anndataoom_fast-0.1.0/third_party/libdeflate/lib/bt_matchfinder.h +342 -0
  73. anndataoom_fast-0.1.0/third_party/libdeflate/lib/cpu_features_common.h +93 -0
  74. anndataoom_fast-0.1.0/third_party/libdeflate/lib/crc32.c +262 -0
  75. anndataoom_fast-0.1.0/third_party/libdeflate/lib/crc32_multipliers.h +375 -0
  76. anndataoom_fast-0.1.0/third_party/libdeflate/lib/crc32_tables.h +587 -0
  77. anndataoom_fast-0.1.0/third_party/libdeflate/lib/decompress_template.h +777 -0
  78. anndataoom_fast-0.1.0/third_party/libdeflate/lib/deflate_compress.c +4128 -0
  79. anndataoom_fast-0.1.0/third_party/libdeflate/lib/deflate_compress.h +15 -0
  80. anndataoom_fast-0.1.0/third_party/libdeflate/lib/deflate_constants.h +56 -0
  81. anndataoom_fast-0.1.0/third_party/libdeflate/lib/deflate_decompress.c +1208 -0
  82. anndataoom_fast-0.1.0/third_party/libdeflate/lib/gzip_compress.c +90 -0
  83. anndataoom_fast-0.1.0/third_party/libdeflate/lib/gzip_constants.h +45 -0
  84. anndataoom_fast-0.1.0/third_party/libdeflate/lib/gzip_decompress.c +144 -0
  85. anndataoom_fast-0.1.0/third_party/libdeflate/lib/hc_matchfinder.h +401 -0
  86. anndataoom_fast-0.1.0/third_party/libdeflate/lib/ht_matchfinder.h +234 -0
  87. anndataoom_fast-0.1.0/third_party/libdeflate/lib/lib_common.h +106 -0
  88. anndataoom_fast-0.1.0/third_party/libdeflate/lib/matchfinder_common.h +224 -0
  89. anndataoom_fast-0.1.0/third_party/libdeflate/lib/riscv/matchfinder_impl.h +97 -0
  90. anndataoom_fast-0.1.0/third_party/libdeflate/lib/utils.c +141 -0
  91. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/adler32_impl.h +135 -0
  92. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/adler32_template.h +518 -0
  93. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/cpu_features.c +213 -0
  94. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/cpu_features.h +179 -0
  95. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/crc32_impl.h +159 -0
  96. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/crc32_pclmul_template.h +424 -0
  97. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/decompress_impl.h +57 -0
  98. anndataoom_fast-0.1.0/third_party/libdeflate/lib/x86/matchfinder_impl.h +122 -0
  99. anndataoom_fast-0.1.0/third_party/libdeflate/lib/zlib_compress.c +82 -0
  100. anndataoom_fast-0.1.0/third_party/libdeflate/lib/zlib_constants.h +21 -0
  101. anndataoom_fast-0.1.0/third_party/libdeflate/lib/zlib_decompress.c +104 -0
  102. anndataoom_fast-0.1.0/third_party/libdeflate/libdeflate-config.cmake.in +3 -0
  103. anndataoom_fast-0.1.0/third_party/libdeflate/libdeflate.h +411 -0
  104. anndataoom_fast-0.1.0/third_party/libdeflate/libdeflate.pc.in +18 -0
@@ -0,0 +1,5 @@
1
+ build/
2
+ dist/
3
+ *.so
4
+ __pycache__/
5
+ *.egg-info/
@@ -0,0 +1,106 @@
1
+ cmake_minimum_required(VERSION 3.18)
2
+ project(anndataoom_fast LANGUAGES C CXX)
3
+
4
+ set(CMAKE_CXX_STANDARD 17)
5
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
6
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
7
+ if(NOT CMAKE_BUILD_TYPE)
8
+ set(CMAKE_BUILD_TYPE Release)
9
+ endif()
10
+
11
+ option(AOF_NATIVE "Tune for the build machine (-march=native); off for wheels" OFF)
12
+
13
+ find_package(Python 3.9 COMPONENTS Interpreter Development.Module REQUIRED)
14
+ if(MSVC)
15
+ # MSVC's default /openmp is OpenMP 2.0; the LLVM runtime has the 3.x API
16
+ # (omp_set_max_active_levels) used here.
17
+ add_library(aof_openmp INTERFACE)
18
+ target_compile_options(aof_openmp INTERFACE $<$<COMPILE_LANGUAGE:CXX>:/openmp:llvm>)
19
+ else()
20
+ # conda-forge's libomp has the install name @rpath/libomp.dylib; record its
21
+ # directory as an rpath so delocate can find and bundle it into the wheel.
22
+ if(APPLE AND DEFINED ENV{OpenMP_ROOT})
23
+ set(CMAKE_BUILD_RPATH "$ENV{OpenMP_ROOT}/lib")
24
+ set(CMAKE_INSTALL_RPATH "$ENV{OpenMP_ROOT}/lib")
25
+ endif()
26
+ find_package(OpenMP REQUIRED)
27
+ add_library(aof_openmp INTERFACE)
28
+ target_link_libraries(aof_openmp INTERFACE OpenMP::OpenMP_CXX)
29
+ endif()
30
+
31
+ # No -ffast-math and no implicit a*b+c -> fma contraction: results must be
32
+ # bit-identical across machines and between native and portable builds.
33
+ if(MSVC)
34
+ set(AOF_FP_FLAGS /O2 /fp:precise /EHsc /bigobj)
35
+ else()
36
+ set(AOF_FP_FLAGS -O3 -fno-math-errno -ffp-contract=off)
37
+ endif()
38
+ execute_process(
39
+ COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
40
+ OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT)
41
+ find_package(nanobind CONFIG REQUIRED)
42
+
43
+ # libdeflate (MIT), decompression side only, built into the extension.
44
+ set(LIBDEFLATE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libdeflate)
45
+ add_library(aof_deflate STATIC
46
+ ${LIBDEFLATE_DIR}/lib/deflate_decompress.c
47
+ ${LIBDEFLATE_DIR}/lib/zlib_decompress.c
48
+ ${LIBDEFLATE_DIR}/lib/adler32.c
49
+ ${LIBDEFLATE_DIR}/lib/utils.c
50
+ ${LIBDEFLATE_DIR}/lib/x86/cpu_features.c
51
+ ${LIBDEFLATE_DIR}/lib/arm/cpu_features.c)
52
+ target_include_directories(aof_deflate PUBLIC ${LIBDEFLATE_DIR})
53
+ set_target_properties(aof_deflate PROPERTIES C_VISIBILITY_PRESET hidden)
54
+
55
+ nanobind_add_module(_core NB_STATIC
56
+ src/cpp/bindings.cpp
57
+ src/cpp/reader.cpp
58
+ src/cpp/kernels.cpp
59
+ src/cpp/knn.cpp
60
+ src/cpp/fuzzy.cpp
61
+ src/cpp/umap.cpp
62
+ src/cpp/groupstats.cpp)
63
+ target_link_libraries(_core PRIVATE aof_deflate aof_openmp)
64
+ target_compile_options(_core PRIVATE ${AOF_FP_FLAGS})
65
+ if(AOF_NATIVE AND NOT MSVC)
66
+ target_compile_options(_core PRIVATE -march=native)
67
+ endif()
68
+
69
+ install(TARGETS _core LIBRARY DESTINATION anndataoom_fast)
70
+
71
+ # Exact port of leidenalg (RBConfigurationVertexPartition) -- separate module.
72
+ nanobind_add_module(_leiden_cpp NB_STATIC
73
+ src/cpp/leiden/bindings_leiden.cpp
74
+ src/cpp/leiden/leiden.cpp)
75
+ target_link_libraries(_leiden_cpp PRIVATE aof_openmp)
76
+ # Bit-exact floating point vs libleidenalg: no -ffast-math, no fma contraction.
77
+ target_compile_options(_leiden_cpp PRIVATE ${AOF_FP_FLAGS})
78
+ if(AOF_NATIVE AND NOT MSVC)
79
+ target_compile_options(_leiden_cpp PRIVATE -march=native)
80
+ endif()
81
+ install(TARGETS _leiden_cpp LIBRARY DESTINATION anndataoom_fast)
82
+
83
+ # Port of brisc's Leiden (MIT, Wainberg & Arbabi) -- separate module.
84
+ nanobind_add_module(_leiden_brisc_cpp NB_STATIC
85
+ src/cpp/leiden_brisc/bindings_leiden_brisc.cpp
86
+ src/cpp/leiden_brisc/leiden_brisc.cpp)
87
+ target_link_libraries(_leiden_brisc_cpp PRIVATE aof_openmp)
88
+ # Bit-exact floating point vs brisc: no -ffast-math, no fma contraction.
89
+ target_compile_options(_leiden_brisc_cpp PRIVATE ${AOF_FP_FLAGS})
90
+ if(AOF_NATIVE AND NOT MSVC)
91
+ target_compile_options(_leiden_brisc_cpp PRIVATE -march=native)
92
+ endif()
93
+ install(TARGETS _leiden_brisc_cpp LIBRARY DESTINATION anndataoom_fast)
94
+
95
+ # Port of brisc's PaCMAP / LocalMAP (MIT, Wainberg & Arbabi) -- separate module.
96
+ nanobind_add_module(_embed_cpp NB_STATIC
97
+ src/cpp/embed/bindings_embed.cpp
98
+ src/cpp/embed/embed.cpp)
99
+ target_link_libraries(_embed_cpp PRIVATE aof_openmp)
100
+ # Bit-exact floating point vs brisc: the fused multiply-adds brisc's -Ofast
101
+ # build performs are written out explicitly, so no fast-math / contraction.
102
+ target_compile_options(_embed_cpp PRIVATE ${AOF_FP_FLAGS})
103
+ if(AOF_NATIVE AND NOT MSVC)
104
+ target_compile_options(_embed_cpp PRIVATE -march=native)
105
+ endif()
106
+ install(TARGETS _embed_cpp LIBRARY DESTINATION anndataoom_fast)