Skip to main content

Numerical optimization on manifolds

Project description

Maniverse

Numerical optimization on manifolds

Overview

Maniverse is a library for optimization on manifolds (OOM).

What is Maniverse intended for?

I wrote Maniverse primarily for my quantum chemistry packages Chinium and Orbaplaw, which take care of some classic constraints in quantum chemistry via OOM. However, Maniverse is intended for more general use than merely quantum chemistry.

Why another library for OOM?

The two packages mentioned above are written in C++ and Python separately, so I hoped to have a single library for both C++ and Python. As far as I know, none of the existing libraries are 2-in-1.

How will Maniverse be maintained?

Optimization on manifolds has two aspects: the manifolds and the optimization algorithms. Therefore, this question should be divided into two: how will the two aspects be maintained separately?

For the manifolds, as a quantum chemist, I focused more on the Stiefel manifold and the Grassmann manifold (and their derivatives), so major emphasis will be laid on these two. However, users are welcomed to give advice on more manifolds to be supported. Additionally, Maniverse provides a base class Manifold from which users can derive their own manifold class.

For the optimization algorithms, the attention is paid to the second-order methods, because nearly all the functions to be optimized in quantum chemistry are smooth and well-behaved. These methods include Riemannian trust region method and Riemannian BFGS. I would like to keep track of the popular field of OOM and implement more efficient algorithms as they are being proposed, as long as they enhance the performance in my projects on quantum chemistry.

Are you an expert on OOM?

No. It has just occurred to me that OOM can be extremely powerful in some topics in quantum chemistry in middle 2024, so I set out to develop Maniverse. However, my knowledge in OOM is deficient, and I am still learning through textbooks, papers and discussions on webs. For helping make Maniverse real, I have a long namelist to thank. The good thing is that the current codes do work as they are expected, at least in my projects.

Prerequisites

  • A C++ compiler that supports C++17 standard
  • GNU make
  • Eigen3 >= 3.4.90
  • PyBind11 >= 2.13.6 (For interface to python)
  • Python3 with numpy (For interface to python)

Installation

Manual build

  • Cloning the repository
$ git clone https://github.com/FreemanTheMaverick/Maniverse.git
  • Edit the first few lines of /Maniverse/makefile for your own computer configuration, including
    • the commands that call the C++ compiler, the GNU make and ar
    • the option that indicates whether to build for C++ use or python use
    • the directories that contain the necessary libraries
  • make -j[N] and you will find the newly created directories /Maniverse/include and /Maniverse/lib.
  • Utilize Maniverse in your project
    • For C++,
      $ g++ test.cpp -isystem $(MANIVERSE)/include/ -L$(MANIVERSE)/lib/ -l:libmaniverse.a # Static linking
      $ g++ test.cpp -isystem $(MANIVERSE)/include/ -L$(MANIVERSE)/lib/ -lmaniverse # Shared linking
      
    • For Python,
      $ export PYTHONPATH=$PYTHONPATH:$(MANIVERSE)/lib/
      $ python
      >>> import Maniverse as mv
      

Pip (for Python only)

  • Installation with pip
pip install Maniverse

Usually pip installs packages to a lib/ directory that is already in $PYTHONPATH, so you do not need to set the environment variable for Maniverse.

  • Utilize Maniverse in your project
$ python
>>> import Maniverse as mv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maniverse-0.3.5.tar.gz (28.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

maniverse-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

maniverse-0.3.5-cp312-cp312-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

maniverse-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (761.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

maniverse-0.3.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (801.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

maniverse-0.3.5-cp311-cp311-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

maniverse-0.3.5-cp311-cp311-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

maniverse-0.3.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

maniverse-0.3.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (801.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

maniverse-0.3.5-cp310-cp310-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

maniverse-0.3.5-cp310-cp310-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

maniverse-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (760.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

maniverse-0.3.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (798.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

maniverse-0.3.5-cp39-cp39-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

maniverse-0.3.5-cp39-cp39-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

maniverse-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (760.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

maniverse-0.3.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (799.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

maniverse-0.3.5-cp38-cp38-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

maniverse-0.3.5-cp38-cp38-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ i686

maniverse-0.3.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (760.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

maniverse-0.3.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (798.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ x86-64

Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ i686

Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (763.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (804.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686

File details

Details for the file maniverse-0.3.5.tar.gz.

File metadata

  • Download URL: maniverse-0.3.5.tar.gz
  • Upload date:
  • Size: 28.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for maniverse-0.3.5.tar.gz
Algorithm Hash digest
SHA256 22884875ca57dba408c13a50121921034f9c4c2585ea87542dbcf5dba2b8f19b
MD5 b362b7f07dc291d14856cd468481b2d9
BLAKE2b-256 acc8e55aaeca783341ca35246593e81994968aa6467a58014731dabf374c6bdc

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a785d58b42ff5a040f5b3c3450b72dc3091cd499a5d8ce77decd4d128bb07504
MD5 b71e6d274307169b29677f0ee4ce5755
BLAKE2b-256 faf886eb32a268bf298169a45ebfa1b6eb7a593ad937f1eb3c00bec41ba4daea

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 36329f58f557b6d7630d9ee0543aae3d3c43e74ade02c566b3a801359f00e546
MD5 9d4931c72eee0c3c783d04cfbc0789e3
BLAKE2b-256 8ffc6a11444ef8870ce86d3ce3a414a80f388eb55c8549ee7d93512c98d591a2

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 766ff8f7f236733c653f1083741fc25266b91c75628123cced873bcc0d6b5ed3
MD5 ded8c93ef4c25e93a82411d472f7d4c5
BLAKE2b-256 6163ab6a09f07e51b3bb10a1221a8c76640d69e2fed44e9d6df62839f0fe6221

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cf1f95650ce8e1200a128f9aee3f2b4625fc084d715a8b36d7d0fcc2024f4e64
MD5 5f2672cb18a44ec832c6ad213c292470
BLAKE2b-256 81d85549ea730469f52ae2bc106fcc24c35533f2ab9fb7e3e1c01b427972d8f1

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d757329f1a062d40a8c182839e518aedff4a3daa20d3874e67298e32f9e21fd9
MD5 d32ac606f2c97d761467e359db436b36
BLAKE2b-256 19434b934d768014e83a225bcf6f8cbcdfc22f6e8eb7041aad96aa024358f3de

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 39d529f084e96dc3a5996f8b8f064930d7b5ae6c5d777452b72149ddb1b99c9b
MD5 7d0c28c1e9e06090046037a1cc5b39b7
BLAKE2b-256 d34621d01528986b1ff9b69b03007cf88d2e5ef7d63aaf5721370a1ea0894cf4

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da241212dcb4f4f62eba1106a9d71bef8d5733e6b612712f5dc1c21339600218
MD5 860cab0c6004c2b1e756d96b329eef37
BLAKE2b-256 1e209e586ba7b78cbf1ab2cfc0478c595e8d75430a51c19ddb30c1ef696aebd3

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fd6246228249e5684533ff6041d49ea29b8ee95abcea8f10faed556a6b60ece8
MD5 08dbfd85055a3543be472e6502cd90b3
BLAKE2b-256 4bbe0692726a4716cd13433f5133bff55c491db226895f878893a7256c21f20e

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 01d169651b4f7829a60d000b272d1016c7379335ecc0be89487ffbe9a1391eba
MD5 18a143eb8c4575920725855059553566
BLAKE2b-256 e90f8a7c172ee5e3688732d7f65147fc22efb80fad107f0e6cc780af10442ca1

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ba3754fbbcc53a8bb01d8b4ef0f84bee0006ecc4501572fcc718859945ae050e
MD5 7513087376b15e72881744d4225abc49
BLAKE2b-256 4b0acd75e805befe03555ed89e22132db35016a103623b32e95f9ac10d845505

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f4660c4b8952fd6a73cb3e08db115558447f9124cfa1a374742ee2f673be00a
MD5 f34dec317876deb34d78547e35577ed4
BLAKE2b-256 2379775fc7b5c588fd7e646c6191088f72b71d151ed1c278a8ebf6ee5bda523f

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 59f2ff1f1cb8aacab936d38ad79de949cc212daf2fdeffdb4033d68d10e28185
MD5 e934e7736108872b3ba55782f7c6ff8c
BLAKE2b-256 dafe6d657af6bb40f0fe39c81c3b06d493d7f6bc1274f779b083a2146a4bff0e

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5060dd120e848a4fd20ad1d5cb8ef630600be15bf0f0e422188c9b780d5c11a
MD5 8e9e504cfbfa8d2166692110f1ca35e7
BLAKE2b-256 28cbf658d5cac7b920a1f6e51417ae697525bf01a49af2ea444bafb152789bf0

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9e3c1631c547dd86c35ad5e0753f9d5e7f77f981e47429569cac32504f76ba7f
MD5 13e46f7d5123b0131db208c968cd6da1
BLAKE2b-256 f34c16dd7122f5b3565b98db5e8644d8a06009a2805d36f74be5bb2e24009d75

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 61c46939f6bee8e56285d2d7f344ec0da9de57e8c8213847d59bdc8047ebc351
MD5 cd92d92a16b87487270820f85041d644
BLAKE2b-256 a2253e4296fe1f50964651cf2fe083e785ab8caf29e9241c0b2b3a2c8a2e65fe

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c7598346cdf8d709769da61792264e7e9bca922bd3eb4653137b325d69e60cfd
MD5 e9992e8f98deb2fa957e38b71ffdcaa8
BLAKE2b-256 869c0ad83b124abbc4e8b5110091421cce1df43cd11f95a5261570ea590c22d8

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b9c1301b12913ee6b6e530f7142eb9348b08e905a772ce7e195f281b77d7e38e
MD5 104ce08e226b99a786d762929ea800e2
BLAKE2b-256 14638e37fe4bf38c62b57ad30d60ce65600d0569e5177434b8831d9defe79ba9

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0d0a142237a42884d4a57c10d919eb90ad0f15df6654a5f61a7f6eb1477eff38
MD5 46ebca318eeb7b11adb3059368beb85c
BLAKE2b-256 2db4dc5bede8e1af933fdc5677d68a91fbea9be77338ad1ea9b3e2e8e5a6b95b

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bf2428867ecfae481c9e19d93d77541de467aa2413d93a8a70b947f9c009af9
MD5 d5c0d76cad09b425dd79bc9c4b74e790
BLAKE2b-256 a80ff77b442591069193821aac362b1c4400494fb846557ae89e0230d57410c7

See more details on using hashes here.

File details

Details for the file maniverse-0.3.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for maniverse-0.3.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f613a59fd048938f7f4a2c1469e0652664dcc23144ca05ea337321d8ad7de644
MD5 b4617a287a304e8c55deca72dc9162fc
BLAKE2b-256 1242d4cb7a8c5dc4c9c3e838ea028463f5921ce49b84886c1a99afcc3f1d270f

See more details on using hashes here.

File details

Details for the file Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8d2b97045e1ffb6eaf39f74848f079692c9b80f53ddd29759b1c0834d6074dd0
MD5 0ebd2231c318c715c6751a5586d69148
BLAKE2b-256 5f0491918c74503735091f380904124e464fce39e4d893495ea6512313d96ee5

See more details on using hashes here.

File details

Details for the file Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for Maniverse-0.3.5-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1a4d5212188898b3eeff8b7cf458967b8f6b2ba2025a8634e3c72162d484404f
MD5 36d3dbb34870fbbe6c75d307f9af6fb0
BLAKE2b-256 5987902289ade7b8c1e504187eb37390483357b2b7fad2a2e29774404d1e1f9f

See more details on using hashes here.

File details

Details for the file Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb1fac88b5f86bb2e9dd7737b4dfff66a3d5f923e70e8e25d4158822a312bf3a
MD5 682bb67b519e8b5aa847290f8e280391
BLAKE2b-256 7d4aa23c7a47a3efe64a2e32f4c879fa69b969e623ef354c6b2843987a226c87

See more details on using hashes here.

File details

Details for the file Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for Maniverse-0.3.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b0bddc0f7c1e8edf350e02b0718cb07a0ce64a29939fac5d19569cff68cc474c
MD5 03742869b6a7ca24f579f72d07db8ae2
BLAKE2b-256 fc16ededcb3391e1799b690767e22e5081607ba3f6770480d5a82075aeffcad0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page