Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
32b46d7
Specify GCC and clang-format versions in Github runners (#148)
menon-karthik Mar 11, 2025
989d3e5
Catch solver error (#152)
mrp089 Mar 27, 2025
09a24be
Update minimum CMake version to 3.5 and set policy version (#161)
ncdorn Apr 2, 2025
5395527
#171 windows builds installers (#172)
zasexton Apr 25, 2025
cc7d196
Update license (#178)
menon-karthik May 19, 2025
8210cb1
added cycle to cycle error and exprtk functionailty to main.md. initi…
menon-karthik Jun 24, 2024
ee5db51
initial draft of joss
menon-karthik Jun 25, 2024
a8d428a
updates to paper
menon-karthik Jun 25, 2024
c57ebf0
more updates to paper
menon-karthik Jun 25, 2024
6b3c5fc
address
menon-karthik Jun 26, 2024
25f76dc
build paper github action
menon-karthik Jun 26, 2024
5d3e4bd
github action bug
menon-karthik Jun 26, 2024
897fd66
paper clean up
menon-karthik Jun 26, 2024
9f58202
test workflow
menon-karthik Jun 26, 2024
f049499
move paper to folder
menon-karthik Jun 26, 2024
37345e9
commit paper to repo
menon-karthik Jun 26, 2024
9ec6306
minor edits
menon-karthik Jun 26, 2024
6272923
(auto) Paper PDF Draft
menon-karthik Jun 26, 2024
2b53214
add SV to summary
menon-karthik Jun 26, 2024
33bee12
(auto) Paper PDF Draft
menon-karthik Jun 26, 2024
d08ede9
(auto) Paper PDF Draft
menon-karthik Jun 26, 2024
08fda0e
minor edit to summary
menon-karthik Jun 26, 2024
27ffef3
(auto) Paper PDF Draft
menon-karthik Jun 26, 2024
0fe9633
add links
menon-karthik Jun 27, 2024
bb71dbb
(auto) Paper PDF Draft
menon-karthik Jun 27, 2024
77738ae
update link
menon-karthik Jun 27, 2024
c959292
(auto) Paper PDF Draft
menon-karthik Jun 27, 2024
c8a0d0a
add author and IC ref
menon-karthik Jun 27, 2024
1638985
(auto) Paper PDF Draft
menon-karthik Jun 27, 2024
3131c1a
JR, MRP comments
menon-karthik Jul 9, 2024
10a5fe8
(auto) Paper PDF Draft
menon-karthik Jul 9, 2024
b1db3bc
update authors
menon-karthik Jul 9, 2024
a35e6ee
(auto) Paper PDF Draft
menon-karthik Jul 10, 2024
c5c202e
jonathan comments
menon-karthik Jul 18, 2024
de94f05
(auto) Paper PDF Draft
menon-karthik Jul 19, 2024
8eee08a
added details of GUI, updated authors, added docs description
menon-karthik Sep 17, 2024
ba0c9b5
(auto) Paper PDF Draft
menon-karthik Sep 17, 2024
ada2fed
ALM comments
menon-karthik Sep 26, 2024
2b84e5f
updated arxiv refs
menon-karthik Sep 26, 2024
8cd9dbe
(auto) Paper PDF Draft
menon-karthik Sep 26, 2024
bdbbba8
(auto) Paper PDF Draft
menon-karthik Sep 26, 2024
f09b9d7
fix math expr in docs
menon-karthik Oct 7, 2024
c622751
(auto) Paper PDF Draft
menon-karthik Oct 7, 2024
481b4f6
(auto) Paper PDF Draft
menon-karthik Oct 17, 2024
25c1277
Update JOSS paper branch with first set of reviewers' comments (#149)
menon-karthik Mar 13, 2025
a9d49e7
(auto) Paper PDF Draft
menon-karthik Mar 13, 2025
a9f73a1
Update JOSS paper references and license (#163)
menon-karthik Apr 2, 2025
1741a64
(auto) Paper PDF Draft
menon-karthik Apr 2, 2025
3929e9d
Minor comments from JOSS review (#170)
menon-karthik Apr 20, 2025
c41cb40
(auto) Paper PDF Draft
menon-karthik Apr 20, 2025
8640cb4
Update paper.md: minor English edits for the JOSS publication (#173)
philipcardiff May 5, 2025
62b94ab
(auto) Paper PDF Draft
menon-karthik May 5, 2025
5f401cd
JOSS review: Fix DOIs (#174)
menon-karthik May 12, 2025
4ced4a0
(auto) Paper PDF Draft
menon-karthik May 12, 2025
52a7358
merged from rebased branch to upstream_paper
menon-karthik May 19, 2025
64df123
(auto) Paper PDF Draft
menon-karthik May 19, 2025
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
101 changes: 86 additions & 15 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,86 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-latest, macos-13, macos-latest]
os: [ubuntu-22.04, ubuntu-latest, macos-13, macos-latest, windows-latest]
version: [13] # GCC version
fail-fast: false
env:
GCC_V: ${{ matrix.version }}
CONDA_ENV: zerod
PYTHONPATH: ${{ github.workspace }}
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
activate-environment: ${{env.CONDA_ENV}}
python-version: "3.11.4"
- name: Install ubuntu dependencies
if: startsWith(matrix.os, 'ubuntu')
run: sudo apt update && sudo apt install build-essential cmake lcov
- name: Create conda environment
run: |
#export PATH="/usr/share/miniconda/bin:$PATH"
#alias conda="$CONDA/bin/conda"
conda create -n zerod python=3.11.4

- name: Install dependencies to get correct version numbers (Ubuntu)
if: startsWith(matrix.os, 'ubuntu')
run: conda install -n zerod -c conda-forge libstdcxx-ng=${GCC_V} gcc=${GCC_V}
run: conda install -c conda-forge libstdcxx-ng=${GCC_V} gcc=${GCC_V}

- name: Install dependencies to get correct version numbers (MacOS)
if: startsWith(matrix.os, 'macos')
run: |
brew install gcc@${GCC_V}
ln -s /usr/local/bin/gcc-${GCC_V} /usr/local/bin/gcc
- name: Install svZeroDSolver
run: conda run -n zerod pip install -e ".[dev]"

- name: Install dependencies for windows
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
choco install mingw --no-progress
conda install -y -c conda-forge cmake graphviz python-graphviz pydot
pip install --upgrade cmake-setuptools

- name: Install POISX-like svZeroDSolver
if: ${{!startsWith(matrix.os, 'windows')}}
run: conda run pip install -e ".[dev]"

- name: Install Windows svZeroDSolver
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
$Env:CMAKE_GENERATOR = 'MinGW Makefiles'
Write-Host "→ Using CMAKE_GENERATOR = $Env:CMAKE_GENERATOR"
pip install --no-build-isolation -v .[dev]
pip show pysvzerod

- name: Install Networkx
run: |
conda run -n zerod pip install networkx
conda run pip install networkx

- name: Test the build
run: |
cd tests
conda run -n zerod pytest -v --durations=0 --ignore=test_dirgraph.py
- name: Build using CMake
conda run pytest -v --durations=0 --ignore=test_dirgraph.py

- name: Build using CMake for POISX-like Systems
if: ${{!startsWith(matrix.os, 'windows')}}
run: |
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_DISTRIBUTION=ON ..
make -j2
- name: Test interface

- name: Build using CMake for Windows Systems
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
mkdir Release
cd Release
cmake -G "MinGW Makefiles" `
-DCMAKE_BUILD_TYPE=Release `
-DENABLE_DISTRIBUTION=ON `
..
cmake --build . --parallel 2

- name: Test interface POISX-like Systems
if: ${{!startsWith(matrix.os, 'windows')}}
run: |
cd tests/test_interface
mkdir build_tests
Expand All @@ -59,32 +97,65 @@ jobs:
./svZeroD_interface_test01 ../../../../Release ../../test_01/svzerod_3Dcoupling.json
cd ../test_02
./svZeroD_interface_test02 ../../../../Release ../../test_02/svzerod_tuned.json

- name: Test interface Windows Systems
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
cd tests/test_interface
mkdir build_tests
cd build_tests
cmake -G "MinGW Makefiles" ..
cmake --build . --parallel 2
cd test_01
./svZeroD_interface_test01.exe `
../../../../Release `
../../test_01/svzerod_3Dcoupling.json

cd ../test_02
./svZeroD_interface_test02 `
../../../../Release `
../../test_02/svzerod_tuned.json

- name: Generate code coverage
if: startsWith(matrix.os, 'ubuntu-22.04')
run: |
cd Release
cmake -DENABLE_COVERAGE=ON ..
make -j2
cd ../tests
conda run -n zerod pytest -v --durations=0 --coverage --ignore=test_dirgraph.py
conda run pytest -v --durations=0 --coverage --ignore=test_dirgraph.py
cd ../Release
make coverage

- name: Save coverage report
if: startsWith(matrix.os, 'ubuntu-22.04')
uses: actions/upload-artifact@v4
with:
name: coverage_report
path: Release/coverage

- name: Upload coverage reports to Codecov
if: startsWith(matrix.os, 'ubuntu-22.04')
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Build installer

- name: Build installer POISX-like Systems
if: ${{!startsWith(matrix.os, 'windows')}}
run: |
cd Release
cpack
cp distribution/svZeroDSolver_* ..

- name: Build installer Windows Systems
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
cd Release
cpack
Copy-Item distribution\svZeroDSolver_* -Destination ..\

- name: Upload installer
uses: actions/upload-artifact@v4
with:
Expand Down
99 changes: 69 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,5 @@
# Copyright (c) Stanford University, The Regents of the University of
# California, and others.
#
# All Rights Reserved.
#
# See Copyright-SimVascular.txt for additional details.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject
# to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
# SPDX-License-Identifier: BSD-3-Clause

set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
cmake_minimum_required(VERSION 3.5)
Expand Down Expand Up @@ -58,6 +31,22 @@ if(ENABLE_COVERAGE)
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
endif()

if (WIN32 AND MSVC)
# CMake ≥ 3.15 has a proper variable
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15")
set(CMAKE_MSVC_RUNTIME_LIBRARY
"MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
# CMake < 3.15: manually swap /MD → /MT in all flags for static
# versions of the runtime libraries
foreach(_var
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS)
string(REPLACE "/MD" "/MT" ${_var} "${${_var}}")
endforeach()
endif()
endif()
# -----------------------------------------------------------------------------
# Set the location to store the binaries and libraries created by this project.
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -159,7 +148,38 @@ add_executable(svzerodcalibrator applications/svzerodcalibrator.cpp
# -----------------------------------------------------------------------------
# Replace EXCLUDE_FROM_ALL with SHARED to test building the Python
# shared library.
pybind11_add_module(pysvzerod EXCLUDE_FROM_ALL applications/pysvzerod.cpp)

pybind11_add_module(pysvzerod applications/pysvzerod.cpp)
if(WIN32 AND "${CMAKE_GENERATOR}" STREQUAL "MinGW Makefiles")
message(STATUS ">> Applying static‑link flags to pysvzerod")

include(CheckCXXCompilerFlag)
set(_static_flags
-static
-static-libgcc
-static-libstdc++
)
# test for winpthread support before adding
check_cxx_compiler_flag("-static-libwinpthread" HAVE_WINPTHREAD)
if(HAVE_WINPTHREAD)
list(APPEND _static_flags -static-libwinpthread)
else()
find_package(Threads REQUIRED)
target_link_libraries(pysvzerod PRIVATE Threads::Threads)
endif()
# apply to compile *and* link
foreach(_f IN LISTS _static_flags)
target_compile_options(pysvzerod PRIVATE ${_f})
# CMake ≥3.13:
target_link_options (pysvzerod PRIVATE ${_f})
endforeach()

# verify in the configure log for static compilation:
get_target_property(_ccopts pysvzerod COMPILE_OPTIONS)
message(STATUS ">>> pysvzerod COMPILE_OPTIONS = ${_ccopts}")
get_target_property(_lnkopts pysvzerod LINK_OPTIONS)
message(STATUS ">>> pysvzerod LINK_OPTIONS = ${_lnkopts}")
endif()

# -----------------------------------------------------------------------------
# Add source sub-directories.
Expand Down Expand Up @@ -232,3 +252,22 @@ add_custom_target(codeformat
# check code format
add_custom_target(codecheck
COMMAND find ${SDIR}/*.h ${SDIR}/*.cpp | xargs clang-format -style=file:${PROJECT_SOURCE_DIR}/.clang-format --dry-run --Werror)

set_target_properties(pysvzerod PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/python
)

# standard install target locations
install(TARGETS pysvzerod
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

# append correct suffix for windows python runtime files
if (WIN32)
set_target_properties(pysvzerod PROPERTIES
PREFIX ""
SUFFIX ".pyd"
)
endif()
12 changes: 8 additions & 4 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
Copyright (c) Stanford University, The Regents of the University of California, and others.
Copyright 2016-2025 Stanford University, The Regents of the University of California, and others.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 changes: 2 additions & 29 deletions applications/pysvzerod.cpp
Original file line number Diff line number Diff line change
@@ -1,32 +1,5 @@
// Copyright (c) Stanford University, The Regents of the University of
// California, and others.
//
// All Rights Reserved.
//
// See Copyright-SimVascular.txt for additional details.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject
// to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
// SPDX-License-Identifier: BSD-3-Clause
/**
* @file pysvzerod.cpp
* @brief Python interface for svZeroDSolver
Expand Down
2 changes: 2 additions & 0 deletions applications/svZeroDGUI/static/js/app.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
// SPDX-License-Identifier: BSD-3-Clause
/**
* app.js
*
Expand Down
4 changes: 3 additions & 1 deletion applications/svZeroDGUI/static/js/cytoscape-edgehandles.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
// SPDX-License-Identifier: BSD-3-Clause
/**
* cytoscape-edgehandles.js
*
Expand Down Expand Up @@ -1168,4 +1170,4 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_14__;

/***/ })
/******/ ]);
});
});
31 changes: 2 additions & 29 deletions applications/svZeroDVisualization/dirgraph_connections.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,7 @@
# coding=utf-8

# Copyright (c) Stanford University, The Regents of the University of
# California, and others.
#
# All Rights Reserved.
#
# See Copyright-SimVascular.txt for additional details.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject
# to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
# SPDX-License-Identifier: BSD-3-Clause

import numpy as np
from dirgraph_wire import wire
Expand Down
Loading
Loading