用于Hafinian计算的开源库

thewalrus的Python项目详细描述


CircleCIAppveyorCodecov coverageCodacy gradeRead the DocsPyPI - Python Version

最快的哈夫尼亚图书馆。有关详细信息,请参见documentation

功能

  • 一般和某些结构矩阵的hafinian、loop-hafinian和torontonian的最快计算。
  • 一个易于使用的界面,使用环路哈夫尼亚进行量子态计算
  • 从图的hafinian和torontonian采样的最新算法。
  • 非负矩阵的HFFAN逼近的有效经典方法。

安装

预装的二进制车轮可用于以下平台:

macOS 10.6+manylinux x86_64Windows 64bit
Python 3.5
Python 3.6
Python 3.7

要安装,只需运行

pip install thewalrus

从源代码编译

海象依赖于以下python包:

此外,编译C++扩展时需要以下依赖项:
    < C++ 11编译器,如:千字节};;;=;;3.3;
  • {a10} -线性代数的C++头库。

在基于debian的系统上,可以通过aptcurl

$ sudo apt install g++ libeigen3-dev

或者在MacOS上使用自制程序:

$ brew install gcc eigen

或者,您可以手动下载特征头:

$ mkdir ~/.local/eigen3 &&cd ~/.local/eigen3
$ wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz -O eigen3.tar.gz
$ tar xzf eigen3.tar.gz eigen-eigen-323c052e1731/Eigen --strip-components 1$exportEIGEN_INCLUDE_DIR=$HOME/.local/eigen3

请注意,我们导出环境变量EIGEN_INCLUDE_DIR,这样海象就可以找到eigen3头文件(如果没有提供,海象将默认在/use/include/eigen3/usr/local/include/eigen3中查找)。

安装完所有依赖项后,您可以编译最新稳定版本的walrus库,如下所示:

$ python -m pip install thewalrus --no-binary :all:

或者,可以通过克隆git存储库并在开发模式下使用pip安装来编译最新的开发版本。

$ git clone https://github.com/XanaduAI/thewalrus.git
$cd thewalrus && python -m pip install -e .

openmp

libwalrus使用openmp并行化永久计算和hafinian计算。目前,这只在使用gnu g++编译器的linux上受支持,因为使用windows/mscv和macos/clang的支持不够。

使用lapack、openblas或mkl

如果您想利用lapack、openblas或mkl的高度优化的矩阵例程,可以选择编译libwalrus,以便eign将这些框架用作后端。结果,libwalrus库中对特征函数的所有调用都被对lapack/openblas/mkl的调用替代。

例如,对于LAPACK集成,请确保安装了{TT12}$C++LAPACK绑定(UTUNTU基于Linux发行版中的TT13}$),然后用环境变量^ {TT14} $:

编译
$USE_LAPACK=1 python -m pip install thewalrus --no-binary :all:

或者,您可以通过USE_OPENBLAS=1来使用openblas库。

软件测试

为了确保walrus库在安装后正常工作,可以导航到源代码文件夹并运行来运行测试套件

$ make test

运行低级C++测试套件,Googletest 将需要安装。在基于ubuntu的发行版中,可以按如下方式执行:

sudo apt-get install cmake libgtest-dev
cd /usr/src/googletest/googletest
sudo cmake
sudo make
sudo cp libgtest* /usr/lib/
sudo mkdir /usr/local/lib/googletest
sudo ln -s /usr/lib/libgtest.a /usr/local/lib/googletest/libgtest.a
sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/googletest/libgtest_main.a

或者,最新的googletest版本可以从源代码安装:

sudo apt install cmake
wget -qO - https://github.com/google/googletest/archive/release-1.8.1.tar.gz | tar -xz
cmake -D CMAKE_INSTALL_PREFIX:PATH=$HOME/googletest -D CMAKE_BUILD_TYPE=Release googletest-release-1.8.1
make install

如果从源安装googletest,请确保包含的头和 库在包含/库路径中可用。

文档

海象文档可以在Read the Docs上在线获得。

要在本地构建它,您需要安装以下软件包:

如果在基于debian的系统上,可以通过pipapt的组合安装它们:

$ sudo apt install pandoc doxygen
$ pip3 install sphinx sphinxcontrib-bibtex nbsphinx breathe exhale

要构建html文档,请转到顶层目录并运行命令

$ make doc

然后可以在docs/_build/html/目录中找到文档。

作者

尼古拉斯·奎萨达、布拉杰什·古普特和乔希·伊扎克。

所有贡献都在acknowledgments page中确认。

如果你用海象做研究,请引用our paper

Andreas Björklund, Brajesh Gupt, and Nicolás Quesada. A faster hafnian formula for complex matrices and its benchmarking on a supercomputer, Journal of Experimental Algorithmics (JEA) 24 (1), 11 (2019)

支架

如果您有问题,请通过在我们的github问题跟踪器上发布该问题来通知我们。

许可证

walrus是freeopen source,根据apache许可证2.0版发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java具有数量可变的参数,可以同时加载数量可变的图像   java应用程序在后台运行数小时后,当对象变量被系统破坏时,如何在应用程序类中保存对象变量   Java使用不带名称空间的XSD验证XML   关于在Play 2.2.1上安装死锁的java问题   字符串中的java字符串分隔符。分裂法   菜单中的java项不显示操作栏,而是在三个点中显示,没有任何图标   以int值作为键的java HashMap   java OpenAPIgeneratorEventPlugin身份验证查询参数未发送   java如何使用用户输入停止程序   java XIMA Formcycle图像预览问题   java Android登录MainActivity中的google   java Spring JPA@Query JPQL因“意外标记:日期”而失败   java如何将JTextField中的数据保存到mysql数据库中?   java jMonkeyEngine是否在网格内应用材质?   java传感器。键入旋转向量没有值?   java是一个从随机数序列中求值的简单算法吗?   java安卓8。x通知:当我的应用打开时,如何避免通过我的应用淡入/淡出通知?   java tomcat无法启动:严重:启动静态资源时出错   带有自定义列表的java Json操作警告