CSSFinder is a software designed to find the closest separable state (CSS) for a given quantum state. This helps in quantifying entanglement and classifying quantum states as entangled or separable.
This software has been designed in a modular way. This is manifested by the separation of the main part, which contains the user interface and modularity support elements, from the algorithm implementation. The main part was written in Python and uses the mechanisms of Python modules. Since it is possible to craft shared libraries in such a way that Python imports them as native modules any compiled language can be used to create highly optimized implementations of desired algorithms. Such implementations are called backends and they use minimalistic interface to interact with main part of the program.
In parallel with the development of this main part, two implementations of the algorithm were created:
cssfinder_backend_numpy
- based on Python NumPy library implementing highly optimized multidimensional arrays and linear algebra.cssfinder_backend_rust
- based on Rust ndarray crate which is an equivalent of NumPy from Rust language world.
Development of those two implementations allowed us to better understand limits of what can and what can not become faster.
CSSFinder online documentation can be found here.
To install CSSFinder from PyPI, use pip
in terminal:
pip install cssfinder
You will have to also install a backend
package, which contains concrete
implementation of algorithms. Simples way is to just install numpy
or rust
extras set:
pip install cssfinder[numpy]
pip install cssfinder[rust]
For more detailed description of installation process visit CSSFinder online documentation.
For quick start guide please visit Quick Start Guide in CSSFinder online documentation.
To display command line interface map use following command:
cssfinder show-command-tree
Output should look similar to this:
...cssfinder show-command-tree
main - CSSFinder is a script for finding closest separable states.
├── clone-example - Clone one of examples to specific location.
├── create-new-json-project - Create new JSON based project directory `<name>` in current working directory.
├── create-new-python-project - Create new Python based project directory `<name>` in current working
├── list-backends - List available backends.
├── list-examples - Show list of all available example projects.
├── project - Group of commands for interaction with projects.
│ ├── add-gilbert-task - Add new gilbert algorithm task.
│ ├── create-json-summary - Load and display project.
│ ├── create-task-report - Create short report for task.
│ ├── inspect - Load project from PROJECT_PATH and display its contents.
│ ├── inspect-output - Load project from PROJECT_PATH and display output of task specified by
│ ├── inspect-tasks - Load project from PROJECT_PATH and inspect configuration of tasks specified by
│ ├── list-tasks - Load project from PROJECT_PATH and list names of all tasks defined.
│ ├── run-tasks - Run tasks from the project.
│ └── to-python - Load project from JSON_PROJECT_PATH and convert it to Python based project.
└── show-command-tree - Show the command tree of your CLI.
For development guidelines please visit Development in CSSFinder online documentation.