1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-11-19 20:42:50 +01:00

Rename the imported functions and get rid of Python package for now

This commit is contained in:
q-posev 2022-05-04 15:06:37 +02:00
parent 04367c1824
commit c9450bb1a7
7 changed files with 38 additions and 47 deletions

View File

@ -9,15 +9,15 @@ set -e
cd src/ cd src/
# compile the wrapper code # compile the wrapper code
cc -c -fPIC `pkg-config --cflags qmckl` -I/usr/include/python3.8 pyqmckl_wrap.c -o pyqmckl_wrap.o cc -c -fPIC `pkg-config --cflags qmckl` -I/usr/include/python3.8 qmckl_wrap.c -o qmckl_wrap.o
# link against the previously installed QMCkl library (as detected by pkg-config) # link against the previously installed QMCkl library (as detected by pkg-config)
cc -shared pyqmckl_wrap.o `pkg-config --libs qmckl` -o _pyqmckl.so cc -shared pyqmckl_wrap.o `pkg-config --libs qmckl` -o _qmckl.so
cd .. cd ..
# copy the produced files into the test dir # copy the produced files into the test dir
cp src/_pyqmckl.so src/pyqmckl.py test/ cp src/_qmckl.so src/qmckl.py test/
# run tests # run tests
cd test/ cd test/

View File

@ -6,8 +6,12 @@ set -e
./build_pyqmckl.sh ./build_pyqmckl.sh
# copy swig-produced pyqmckl.py module into the pyqmckl/ folder # copy swig-produced pyqmckl.py module into the pyqmckl/ folder
cp src/pyqmckl.py pyqmckl/ #cp src/qmckl.py qmckl/
cp src/qmckl.py ./
# install using pip # install using pip
pip install . pip install .
cd test
python test_api.py
cd ..

View File

@ -1,2 +0,0 @@
from .pyqmckl import *
from ._version import __version__

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
setup.py file for pyqmckl package setup.py file for qmckl package
""" """
from setuptools import setup, Extension from setuptools import setup, Extension
@ -11,49 +11,33 @@ from os.path import join
with open("README.md", "r") as fh: with open("README.md", "r") as fh:
long_description = fh.read() long_description = fh.read()
# Read the version string from the file
VERSIONFILE = "pyqmckl/_version.py"
try:
exec(open(VERSIONFILE).read())
except:
raise IOError("Could not open the version file %s." % (VERSIONFILE, ))
version_r = __version__
if not version_r:
raise RuntimeError("Unable to find a version string in %s." % (VERSIONFILE, ))
# Define the name of the Python package # Define the name of the Python package
mod_name = 'pyqmckl' MODULE_NAME = "qmckl"
# Define pyqmckl extension module based on SWIG interface file (requires qmckl.h) # Define pyqmckl extension module based on SWIG interface file (requires qmckl.h)
pyqmckl_module = Extension(name = mod_name + '._' + mod_name, pyqmckl_module = Extension(name = "._" + MODULE_NAME,
sources = [ join('src', mod_name + '_wrap.c') ], sources = [ join("src", MODULE_NAME + "_wrap.c") ],
#include_dirs = [numpy_includedir], #include_dirs = [numpy_includedir],
#library_dirs = [], #library_dirs = [],
#runtime_library_dirs = [], libraries = ["qmckl"],
libraries = ['qmckl'], extra_compile_args = ["-Wall"],
extra_compile_args = ['-Wall'],
#extra_link_args = [h5_ldflags], #extra_link_args = [h5_ldflags],
#swig_opts = ['-py3' , '-builtin'], depends = [ join("src", "qmckl.h") ],
depends = [ join('src', 'qmckl.h') ], language = "c"
language = 'c'
) )
setup(name = mod_name, setup(name = MODULE_NAME,
version = version_r, version = "0.2.0",
author = "TREX-CoE", author = "TREX-CoE",
author_email = "posenitskiy@irsamc.ups-tlse.fr", author_email = "posenitskiy@irsamc.ups-tlse.fr",
description = """Python API of the QMCkl library""", description = """Python API of the QMCkl library""",
long_description = long_description, long_description = long_description,
long_description_content_type = "text/markdown", long_description_content_type = "text/markdown",
ext_modules = [pyqmckl_module], ext_modules = [pyqmckl_module],
py_modules = [mod_name], py_modules = [MODULE_NAME],
packages = [mod_name], url = "https://github.com/TREX-CoE/qmckl",
url = 'https://github.com/TREX-CoE/qmckl', license = "BSD",
license = 'BSD',
classifiers=[ classifiers=[
"Intended Audience :: Science/Research", "Intended Audience :: Science/Research",
"Intended Audience :: Developers", "Intended Audience :: Developers",
@ -69,5 +53,5 @@ setup(name = mod_name,
"Operating System :: MacOS" "Operating System :: MacOS"
], ],
python_requires = ">=3.0", python_requires = ">=3.0",
install_requires = ['numpy>=1.17.3'] install_requires = ["numpy>=1.17.3"]
) )

View File

@ -1,4 +1,4 @@
%module pyqmckl %module qmckl
/* Define SWIGWORDSIZE in order to properly align long integers on 64-bit system */ /* Define SWIGWORDSIZE in order to properly align long integers on 64-bit system */
#define SWIGWORDSIZE64 #define SWIGWORDSIZE64
%{ %{
@ -7,6 +7,11 @@
#include "qmckl.h" #include "qmckl.h"
%} %}
/*
* Get rid of the function prefixes, as the scripting language will use
* the module's namespace.
*/
%rename("%(strip:[qmckl_])s") "";
/* Include stdint to recognize types from stdint.h */ /* Include stdint to recognize types from stdint.h */
%include <stdint.i> %include <stdint.i>

View File

@ -1,13 +1,13 @@
""" """
This is the test of the Python API of the QMCkl library. This is the test of the Python API of the QMCkl library.
It is the `bench_mos.c` C code adapted from the `qmckl_bench` It is the `bench_mos.c` C code adapted from the `bench`
repo and translated into Python with some modifications. repo and translated into Python with some modifications.
""" """
from os.path import join from os.path import join
import time import time
import pyqmckl as pq import qmckl as pq
from data.data import coord from data.data import coord
@ -16,34 +16,34 @@ elec_num = 158
ITERMAX = 10 ITERMAX = 10
ctx = pq.qmckl_context_create() ctx = pq.context_create()
try: try:
pq.qmckl_trexio_read(ctx, 'fake.h5') pq.trexio_read(ctx, 'fake.h5')
except RuntimeError: except RuntimeError:
print('Error handling check: passed') print('Error handling check: passed')
fname = join('data', 'Alz_small.h5') fname = join('data', 'Alz_small.h5')
pq.qmckl_trexio_read(ctx, fname) pq.trexio_read(ctx, fname)
print('trexio_read: passed') print('trexio_read: passed')
pq.qmckl_set_electron_walk_num(ctx, walk_num) pq.set_electron_walk_num(ctx, walk_num)
mo_num = pq.qmckl_get_mo_basis_mo_num(ctx) mo_num = pq.get_mo_basis_mo_num(ctx)
assert mo_num == 404 assert mo_num == 404
pq.qmckl_set_electron_coord(ctx, 'T', coord) pq.set_electron_coord(ctx, 'T', coord)
size_max = 5*walk_num*elec_num*mo_num size_max = 5*walk_num*elec_num*mo_num
mo_vgl = pq.qmckl_get_mo_basis_mo_vgl(ctx, size_max) mo_vgl = pq.get_mo_basis_mo_vgl(ctx, size_max)
assert mo_vgl.size == size_max assert mo_vgl.size == size_max
start = time.clock_gettime_ns(time.CLOCK_REALTIME) start = time.clock_gettime_ns(time.CLOCK_REALTIME)
for _ in range(ITERMAX): for _ in range(ITERMAX):
mo_vgl_in = pq.qmckl_get_mo_basis_mo_vgl_inplace(ctx, size_max) mo_vgl_in = pq.get_mo_basis_mo_vgl_inplace(ctx, size_max)
end = time.clock_gettime_ns(time.CLOCK_REALTIME) end = time.clock_gettime_ns(time.CLOCK_REALTIME)