用于Hafinian计算的开源库

hafnian的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 hafnian

从源代码编译

hafinian依赖于以下python包:

<>此外,为了编译包含的FORTRAN和C++扩展,需要以下依赖关系:

  • Fortran编译器,例如gfortran
  • 一个C++ 11编译器,如^ {Tt2} $ & gt;=4.81,^ {Tt3} $ & gt;=3.3,^ {tT4} $ & gt;=140/2015
  • {a10} -线性代数的C++头库。

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

$ sudo apt install g++ gfortran 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,以便hafinian可以找到eign3头文件(如果未提供,hafinian将默认在/use/include/eigen3/usr/local/include/eigen3中查找)。

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

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

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

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

openmp

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

使用lapack、openblas或mkl

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

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

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

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

软件测试

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

$ 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,请确保包含的头和 库在包含/库路径中可用。

文档

Hafinian+文档当前未在线托管。要在本地构建它,您需要安装以下软件包:

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

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

建造HTML文档,转到顶层目录并运行命令

$ make doc

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

作者

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

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

如果您正在使用hafinian进行研究,请引用our paper

Andreas Björklund, Brajesh Gupt, and Nicolás Quesada. A faster hafnian formula for complex matrices and its benchmarking on the Titan supercomputer arXiv, 2018. arxiv:1805.12498

支架

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

许可证

hafinian是freeopen source,在apache许可2.0版下发布。

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

推荐PyPI第三方库


热门话题
java Github操作在生成期间未识别机密值   java根据给定的索引号选择适当的字符。开关语句   java如何在我的项目中使用SCA mvn插件在Fortify SCA扫描中仅包含一个文件夹?   java SwingWorker无法完成   使用KeyBindings Java在按住键时摆动停止暂停   java如何从sqlite数据库获取数据   java如何使用windows批处理文件逐个启动spring引导jar文件?   在Java中,字典是在构造函数中初始化映射的更好方法   用于在Java中创建2D形状的swing高级API   JavaSwing:制作一个可滚动的JPanel列表   引用泛型类中枚举成员的c#语法   java Doc4j:由于元素类型不同,比较两个文档失败   java如何优化绘制这些标记?