{"id":20070909,"url":"https://github.com/frederikheber/basso","last_synced_at":"2026-06-07T04:31:59.173Z","repository":{"id":201819317,"uuid":"87698971","full_name":"FrederikHeber/BASSO","owner":"FrederikHeber","description":"BAnach Sequential Subspace Optimizer library for solving optimization problems in Banach spaces","archived":false,"fork":false,"pushed_at":"2019-04-15T12:51:07.000Z","size":2336,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"stable","last_synced_at":"2025-01-12T23:47:06.532Z","etag":null,"topics":["banach-space","bregman-distance","bregman-projection","lp-spaces","optimization-library","python-interface","sequential-subspace-optimization"],"latest_commit_sha":null,"homepage":"https://frederikheber.github.io/BASSO/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FrederikHeber.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-04-09T09:59:19.000Z","updated_at":"2020-07-03T14:15:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"8701d6d7-6b82-47fa-a2e9-6622b01ac9e0","html_url":"https://github.com/FrederikHeber/BASSO","commit_stats":null,"previous_names":["frederikheber/basso"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederikHeber%2FBASSO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederikHeber%2FBASSO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederikHeber%2FBASSO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederikHeber%2FBASSO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FrederikHeber","download_url":"https://codeload.github.com/FrederikHeber/BASSO/tar.gz/refs/heads/stable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241502791,"owners_count":19972956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["banach-space","bregman-distance","bregman-projection","lp-spaces","optimization-library","python-interface","sequential-subspace-optimization"],"created_at":"2024-11-13T14:26:09.574Z","updated_at":"2026-06-07T04:31:59.128Z","avatar_url":"https://github.com/FrederikHeber.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"libBasso - BAnach Sequential Subspace Optimization library\n==========================================================\n\nBasso is a library to minimize a constrained functional in a Banach space\nsetting. It is an extension of the sequential subspace optimization\nmethod by Narkiss by multiple search directions.\n\nFor more details we refer to the extensive [userguide](https://frederikheber.github.io/BASSO/).\n\nInstallation instructions:\n--------------------------\n\nBasso depends on the following packages:\n * cmake - make utility for checking prerequisites\n * GSL - GNU Scientific library for function minimization\n * NLopt - (optional) alternative (to GSL) function minimization library\n * Eigen - C++ library for linear algebra\n * ARPack - linear algebra library used for truncated SVD\n * CppUnit - C++ library for unit testing\n * boost - almost standard library (we require 1.54 due to logging)\n * poco - poco is used to write iteration information to a sqlite3 database\n * libpng - library for writing png files (used by a helper program)\n\n... using docker\n----------------\n\nFor an tutorial to the python interface of BASSO, there is a [docker image](https://hub.docker.com/r/frederikheber/basso)\nusing jupyter notebook available. It is run via\n````\ndocker run -p 8888:8888 --name basso frederikheber/basso:latest\n````\nand afterwards you need direct your browser to the URL shown.\n\n... on Ubuntu\n-------------\nEigen and CppUnit packages and reside in standard paths, hence we have to do nothing\n\nIt is advised to compile the source in a distinct build directory, e.g. in a subfolder \"build64\". This is referred to as out-of-source build. To prepare the compilation, call cmake then as follows:\n\n    cmake [options] ..\n\nThese *options* might be one of the following. Take caution to prepend them\nbefore the path containing the **CMakeLists.txt** file!\n\nTypically, the installation path needs to be adapted: `... -DCMAKE_INSTALL_PREFIX:PATH=\u003cpath to install to\u003e`\n\n### using boost\n\n\nIf additionally boost libraries do not reside in standard folders, such as\n/usr/include, /usr/lib ... but in ~/packages/boost the following options might help:\n\n    .. -DBoost_NO_SYSTEM_PATHS=ON -DBOOST_ROOT=\u003cpath to boost\u003e/boost/\n\nNote that boost libraries should have been compiled with \"layout=tagged\". Otherwise, FindBoost.cmake can not find the libraries and headers.\n\nTo allow for debugging, you might futher add \"-DBoost_DEBUG=ON\".\n\n### using Eigen\n\nIf Eigen resides in some specific folder, add it as follows\n\n    .. -DEIGEN3_INCLUDE_DIR=\u003cpath to eigen\u003e/include/eigen3\n\n### Debug or Release builds\n\nIn general, to compile in debugging information add\n\n    -DCMAKE_BUILD_TYPE=Debug\n\nto compile without use\n\n    -DCMAKE_BUILD_TYPE=Release\n\n\nDocumentation\n-------------\n\nTo generate the doxygen documenation, you use\n\n    make doc\n\nThe generated API html can the be found under **src/Documentation/doc/html/index.html**.\n\nMoreover, the userguide in **doc/basso.pdf** and **doc/basso.html** is built by\ndefault by calling `make`. If not, enter\n\n   cd doc; make\n\nTiming Measurements\n-------------------\n\nAdd\n\n    -DUSE_TIMINGS=true\n\nto activate the timing measurements of each part of the algorithm.\n\n\nParallelization\n---------------\n\nThe example MatrixFactorizer has been implemented for parallel execution with\nboth MPI and OpenMP. However, only one of the two can be activated during\ncompilation.\n\nFor **MPI** add\n\n    -DUSE_MPI=True\n\nand for **OpenMP** add\n\n    -DUSE_OPENMP=True\n\nto the cmake command line. Note that only one of them may be True at the same\ntime (but both can be False in which case factorization is done sequentially.)\n\nSpecial purpose diff\n--------------------\n\nResult files are compared against stored files in the regression tests using\ndiff by default. `diff` compares literally and does not know about numerical\n(im)precision. Hence, a different diff, such as ndiff, may be specified via\n\n    -DUSE_NDIFF=ON -DNDIFF_PATH=\u003cpath to ndiff's bin folder\u003e\n    -DNDIFF_OPTIONS:LIST=\"-relerr;1e-4;-q\"\n\nto activate comparison of outputfiles with ndiff. The semicolons \";\" are\nrequired to ensure that we have a list of options (otherwise they are presented\nto ndiff as single string which will not work).\n\nNote: There is another `ndiff` program used to compare XML output files from\nnmap. Hence, the path NDIFF_PATH to ndiff's bin folder should always be given.\n\n\nVarious Tests\n-------------\n\nVarious compile switches exist to enable more testing of the algorithm.\n\nTRUESOLUTION\t\t\tCalculates true solution in inner MatrixFactorizer loop to calculate Bregman distance and check convergence (see src/MatrixFactorizer.cpp).\nFULLMATRIXNORM\t\t\tCalculates operator norm via SVD instead of matrix norm (takes O(N^3) !) (cmake define or compile switch)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrederikheber%2Fbasso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrederikheber%2Fbasso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrederikheber%2Fbasso/lists"}