Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
c48617d
add hublabel build and query code, get tests to build
electricEpilith Dec 9, 2025
9a5bbd3
replace placeholder getter stuff, rewrite hhlquery to take iterator
electricEpilith Dec 12, 2025
28add14
Merge remote-tracking branch 'upstream/master' into hublabel
electricEpilith Dec 12, 2025
3e009fa
debugging etc.
electricEpilith Jan 23, 2026
6755f44
Change hub_labels to a size_t vector, which the function to generate …
adamnovak Jan 23, 2026
37492aa
Merge remote-tracking branch 'upstream/hublabel' into hublabel
adamnovak Jan 23, 2026
0065e97
Define a type for the complex temporary X index indexing, and accesso…
adamnovak Jan 23, 2026
420c9e9
Use indexing accessors in make_boost_graph()
adamnovak Jan 23, 2026
5edfaa0
Add const accessors and fix build errors
adamnovak Jan 23, 2026
b9ba500
Write some hub labeling interface docs as I remember it, and add some…
adamnovak Jan 26, 2026
23e6745
Add synthetic debug logging and synthetic analysis results to make_bo…
adamnovak Jan 27, 2026
ad43882
Synthesize code to allocate vertices and avoid wasting them, and to h…
adamnovak Jan 27, 2026
0e6aa47
Redesign to only think of indexing inward-facing handles for converti…
adamnovak Jan 27, 2026
3619491
Teach CMake about Boost dependency
adamnovak Jan 27, 2026
7e33257
Stop putting negative-unsigned entries in the hub labels
adamnovak Jan 27, 2026
9a88f8f
Define what to do for asking about a node to itself, and test it
adamnovak Jan 27, 2026
ac07468
Qualify std::move calls to appease compiler
adamnovak Jan 27, 2026
3b84fb0
Const-ify arguments to label building
adamnovak Jan 27, 2026
227e4d1
De-comment the existing hub labeling test cases into distinct test ca…
adamnovak Jan 27, 2026
9b33554
Add some synthetic unit tests, with revisions, for some more graph sh…
adamnovak Jan 27, 2026
385efa8
Fix signature mismatch
adamnovak Jan 27, 2026
9ae76d4
Fix type name
adamnovak Jan 27, 2026
1d50a68
Merge remote-tracking branch 'origin/master' into hublabel
adamnovak Jan 28, 2026
fb774f2
Rework HHL vertex ID computation so we can actually find the right ve…
adamnovak Jan 28, 2026
a5c20a8
Be clear about who is responsible for initializing NodeProp fields, a…
adamnovak Jan 29, 2026
9a7e4c3
Produce more descriptive errors for out of bounds temporary snarl rec…
adamnovak Jan 29, 2026
a868f92
Fix cases where simple snarls could be accesed with the non-simple Sn…
adamnovak Jan 29, 2026
f8de1dc
Figure out ChainRecord is used to decode snarls sometimes and documen…
adamnovak Jan 29, 2026
41ccdf3
Stop trying to report types we aren't allowed to compute
adamnovak Jan 29, 2026
a3948d4
Handle ROOT record type as also needing to canonicalize to the one tr…
adamnovak Feb 2, 2026
0609855
Use stringification wrappers to avoid mis-indexing the enum name tables
adamnovak Feb 2, 2026
178857d
Turn off debugging prints and some of the checks
adamnovak Feb 2, 2026
8a85c23
Flag off more debug prints
adamnovak Feb 2, 2026
e9ff343
Merge branch 'hublabel' into HEAD
adamnovak Feb 10, 2026
9dc0326
Merge remote-tracking branch 'upstream/hublabel' into hublabel
adamnovak Feb 10, 2026
d429581
Adjust debugging for better diffing and add a distance promotion func…
adamnovak Feb 11, 2026
43a6bc7
Turn on debugging and add more query prints
adamnovak Feb 11, 2026
baa9b49
Rename orientation flags and start collecting constraints on them to …
adamnovak Feb 11, 2026
ee08df2
Turn on debugging again and fix adding to infinite unreachable loop d…
adamnovak Feb 13, 2026
f522ff9
Turn off debugging
adamnovak Feb 13, 2026
badfab6
Implement storing regularity in index via the type
adamnovak Mar 20, 2026
1522fa9
Fix non-Python build
adamnovak Mar 20, 2026
46aa094
Enable debugging and stop OR-ing in enum values
adamnovak Mar 20, 2026
efa47f2
Turn off debugging
adamnovak Mar 20, 2026
bb713f4
Try not to run a jillion threads during tests
adamnovak Mar 20, 2026
00327bd
Add get_snarl_child_count and use hub labels for oversized snarl dist…
electricEpilith Mar 24, 2026
72eefa7
Count simple and trivial snarls as regular because zip codes do
adamnovak Mar 24, 2026
0be8fda
Merge branch 'mergePlaceholder' into hublabel
electricEpilith Mar 30, 2026
28d2d2b
add back get_snarl_child_count
electricEpilith Mar 30, 2026
4c70990
Merge remote-tracking branch 'origin/hublabel-debug' into hublabel
electricEpilith Mar 30, 2026
5acf1f4
Fix duplicate get_snarl_child_count declaration/definition from merge
electricEpilith Mar 30, 2026
fdb9a74
upgrade version number to 5
electricEpilith Apr 2, 2026
ea70e55
upgrade version number
electricEpilith Apr 2, 2026
09f9d6e
fix conflict from accidentally doing the same version upgrade twice
electricEpilith Apr 7, 2026
2c3c0db
Add CHOverlay output
adamnovak Apr 22, 2026
a7602fd
Address some of my own review comments
adamnovak Apr 22, 2026
a169eca
prevent sdsl conflicts
electricEpilith Apr 26, 2026
531e77e
prevent libhandlegraph conflicts
electricEpilith Apr 26, 2026
5aff1a5
prevent hopscotch conflicts
electricEpilith Apr 26, 2026
789ad6d
prevent mio conflicts
electricEpilith Apr 26, 2026
78584c4
Update bdsg/include/bdsg/internal/indexing_iterator.hpp
electricEpilith May 8, 2026
d6dffdd
Fix collections misspelling
electricEpilith May 8, 2026
9882957
Fix typos
electricEpilith May 8, 2026
90289e8
Fix collections typo
electricEpilith May 8, 2026
772d34c
Update bdsg/include/bdsg/internal/indexing_iterator.hpp
electricEpilith May 8, 2026
2d12064
CI needs to have Boost to support contraction hierarchy code
electricEpilith May 13, 2026
83cea1f
consolidate contraction-hierarchy/hub-labeling stuff
electricEpilith May 13, 2026
8e57a39
fix errors caused by const conflicts
electricEpilith May 13, 2026
467ab3d
fix PYBIND11_MAKE_OPAQUE 'a type specifier is required for all declar…
electricEpilith May 13, 2026
b5abb87
format code
electricEpilith May 13, 2026
91b0e91
uncomment non-hub-labeling tests
electricEpilith May 13, 2026
1c35a3b
mention Boost dep
electricEpilith May 13, 2026
78b6d68
Remove unnecessary assert
electricEpilith May 15, 2026
768a6a0
add include guard
electricEpilith May 15, 2026
b06d1e1
mention Boost in dep list
electricEpilith May 15, 2026
4fbdd5a
reject v4 indexes
electricEpilith May 15, 2026
7a41612
convert /// comments to doc comments
electricEpilith May 16, 2026
421ea29
convert /// comment to doc comment
electricEpilith May 16, 2026
a9ccb25
remove TODO, we're not making separate RecordWriter for oversized snarls
electricEpilith May 16, 2026
1b72048
fix commenting errors
electricEpilith May 16, 2026
376501a
better file comment
electricEpilith May 16, 2026
d650c3f
not a test file
electricEpilith May 16, 2026
ed24eed
remove unnecessary comment
electricEpilith May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/testmac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- name: Run build and test
run: |
set -e
brew install libomp doxygen jansson
brew install libomp doxygen jansson boost
mkdir -p build
cd build
cmake .. -DRUN_DOXYGEN=ON -DPYTHON_EXECUTABLE="$(which python3)"
Expand Down
28 changes: 20 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ OPTION(USE_INSTALLED_LIBHANDLEGRAPH "Use the version of libhandlegraph installed
# TODO: We can only do out-of-source builds!
# TODO: How do we error out meaningfully on in-source builds?

# We build using c++14
set(CMAKE_CXX_STANDARD 14)
# We build using c++20
set(CMAKE_CXX_STANDARD 20)
# We need library paths to be relative in the build directories so we can let
# the libraries in our Python module find each other when we package them into
# a wheel. This only works on CMake 3.14+; older CMake we have to bully with
Expand Down Expand Up @@ -143,6 +143,8 @@ endif()
# Find other system dependencies
pkg_check_modules(Jansson REQUIRED IMPORTED_TARGET jansson)

find_package(Boost REQUIRED)
Comment thread
electricEpilith marked this conversation as resolved.

# Find our bdsg package directory where input sources and dependencies are
set(bdsg_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bdsg")

Expand All @@ -158,15 +160,19 @@ include(ExternalProject)

# sdsl-lite (gives an "sdsl" target)
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build sdsl-lite shared libraries")
add_subdirectory("${bdsg_DIR}/deps/sdsl-lite")
if (NOT TARGET sdsl)
add_subdirectory("${bdsg_DIR}/deps/sdsl-lite")
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# It produces divsufsort and divsufsort64 targets that don't know they need OMP on Mac.
set_target_properties(divsufsort PROPERTIES LINK_FLAGS "-lomp")
set_target_properties(divsufsort64 PROPERTIES LINK_FLAGS "-lomp")
endif()

# hopscotch_map (required by DYNAMIC, gives a "tsl::hopscotch_map" target)
add_subdirectory("${bdsg_DIR}/deps/hopscotch-map")
if (NOT TARGET tsl::hopscotch_map)
add_subdirectory("${bdsg_DIR}/deps/hopscotch-map")
endif()

# DYNAMIC (header only)
# Does not ship its own install step or define a target, so we make our own target
Expand All @@ -185,7 +191,9 @@ elseif (TARGET handlegraph_objs)
message("Using libhandlegraph built by another CMake")
else ()
message("Using bundled libhandlegraph")
add_subdirectory("${bdsg_DIR}/deps/libhandlegraph")
if (NOT TARGET handlegraph_shared AND NOT TARGET handlegraph)
add_subdirectory("${bdsg_DIR}/deps/libhandlegraph")
endif()
endif()


Expand All @@ -201,7 +209,9 @@ add_library(sparsepp INTERFACE)
target_include_directories(sparsepp INTERFACE "${bdsg_DIR}/deps/sparsepp/")

# mio (header only)
add_subdirectory("${bdsg_DIR}/deps/mio")
if (NOT TARGET mio::mio)
add_subdirectory("${bdsg_DIR}/deps/mio")
endif()

if (BUILD_PYTHON_BINDINGS)

Expand Down Expand Up @@ -306,6 +316,7 @@ add_library(bdsg_objs OBJECT
${bdsg_DIR}/src/strand_split_overlay.cpp
${bdsg_DIR}/src/utility.cpp
${bdsg_DIR}/src/vectorizable_overlays.cpp
${bdsg_DIR}/src/ch.cpp
${bdsg_DIR}/src/snarl_distance_index.cpp
)

Expand All @@ -324,7 +335,8 @@ set(bdsg_TARGET_DEPS
bbhash
sparsepp
mio::mio
PkgConfig::Jansson)
PkgConfig::Jansson
Boost::boost)

set(bdsg_LIBS
${bdsg_TARGET_DEPS}
Expand All @@ -338,7 +350,7 @@ target_include_directories(bdsg_objs PUBLIC ${bdsg_INCLUDES})
set_target_properties(bdsg_objs PROPERTIES POSITION_INDEPENDENT_CODE TRUE)

if (CMAKE_MAJOR_VERSION EQUAL "3" AND (CMAKE_MINOR_VERSION EQUAL "10" OR CMAKE_MINOR_VERSION EQUAL "11"))
# Before CMake 3.12 we can't ise target_link_libraries on an object library to convey the need to use depencies' include directories
# Before CMake 3.12 we can't use target_link_libraries on an object library to convey the need to use depencies' include directories
get_target_property(sdsl_INCLUDE sdsl INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(bdsg_objs PUBLIC ${sdsl_INCLUDE})
get_target_property(hopscotch_map_INCLUDE tsl::hopscotch_map INTERFACE_INCLUDE_DIRECTORIES)
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ OBJS += $(OBJ_DIR)/path_subgraph_overlay.o
OBJS += $(OBJ_DIR)/subgraph_overlay.o
OBJS += $(OBJ_DIR)/vectorizable_overlays.o
OBJS += $(OBJ_DIR)/packed_subgraph_overlay.o
OBJS += $(OBJ_DIR)/ch.o
Comment thread
electricEpilith marked this conversation as resolved.
OBJS += $(OBJ_DIR)/snarl_distance_index.o
OBJS += $(OBJ_DIR)/strand_split_overlay.o
OBJS += $(OBJ_DIR)/utility.o
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ The documentation can then be found at `docs/_build/html/index.html`.
- [`DYNAMIC`](https://github.com/xxsds/DYNAMIC)
- [`BBHash/alltypes`](https://github.com/rizkg/BBHash/tree/alltypes)
- [`jansson`](https://github.com/akheron/jansson)
- [`Boost`](https://www.boost.org/).

The build process with `make` assumes that these libraries and their headers have been installed in a place on the system where the compiler can find them (e.g. in `CPLUS_INCLUDE_PATH`).

Expand Down
Loading
Loading