Skip to main content

Learn and Infer Non Compensatory Sortings

Project description

lincs (Learn and Infer Non Compensatory Sortings) is a collection of MCDA algorithms, usable as a command-line utility.

lincs supports Linux, macOS and Windows, with the exception that GPU-based algorithms are not available on macOS, because CUDA itself is not available there. On these 3 OSes, lincs only support x86_64 CPUs.

lincs is licensed under the GNU Lesser General Public License v3.0 as indicated by the two files COPYING and COPYING.LESSER.

lincs is available for install from the Python package index. Its documentation and its source code are on GitHub.

Questions? Remarks? Bugs? Want to contribute? Open an issue or a discussion!

@todo(Feature, later) Make lincs usable as a Python package.

@todo(Feature, later) Make lincs usable as a C++ library.

@todo(Feature, later) Support M1 and M2 chips on macOS.

@todo(Feature, much later) Support ARM processors in general.

@todo(Project management, when we publish a paper, later) Add a note asking academics to kindly cite our work.

Contributors

lincs is developed by the MICS research team at CentraleSupélec.

Its main authors are (alphabetical order):

Project goals

Provide MCDA tools usable out of the box

You should be able to use lincs without being a specialist of MCDA and/or NCS models. Just follow the “Get started” section below.

Provide a base for developing new MCDA algorithms

lincs is designed to be easy to extend with new algorithms or even replace parts of existing algorithms. See our contributor guide for more details.

Get started

Depending on your favorite approach, you can either start with our hands-on “Get started” guide or with our conceptual overview documentation. The former will show you how to use our tools, the latter will explain the concepts behind them: what’s MCDA, what are NCS models, etc. If in doubt, start with the conceptual overview. We highly recommend you read the other one just after.

Once you’ve used lincs a bit, you can follow up with our user guide and reference documentation.

Versioning

Starting with version 1.0.0, lincs uses semantic versioning.

lincs’ public API (that “must be declared” according to SemVer) is constituted exclusively by its reference documentation, at a code level: we consider a change as backward compatible if the client code doesn’t need to be modified to keep working, even if that change requires recompiling the client code in some cases.

Future backward compatible changes might change lincs’ behavior, especially with regards to pseudo-random behavior.

Note that we plan to make lincs usable as Python and C++ libraries. When we do that, we’ll add these interfaces to the public API. In the mean time, if you chose to use lincs that way, you must expect unanticipated changes to these interfaces.

Exceptions

Default values

Default values of optional arguments are not considered part of the public API. They might change in future releases if we find values that perform better for most use-cases.

We advice you write your scripts in an explicit way where it matters to you, and rely on implicit default values only where you want the potential future improvements.

File formats

The same specification applies to files read and produced by lincs. This leads to an issue about backward compatibility: if we allow more flexibility in input files, new versions of lincs will be able to read both the old and the new format, in a backward-compatible way. But if lincs produces a file in the new format, existing client scripts might not be able to read it, making this change backward-incompatible.

To solve this issue, we impose an additional constraint to lincs’ public API: lincs will produce files in a new format only when the client uses the new feature that motivated the new format.

That way, we know that the client already needs to modify their scripts, so they can adapt to the new format.

Develop lincs itself

See our contributor guide.

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

lincs-0.11.0.tar.gz (2.8 MB view hashes)

Uploaded Source

Built Distributions

lincs-0.11.0-cp311-cp311-win_amd64.whl (5.2 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

lincs-0.11.0-cp311-cp311-manylinux_2_31_x86_64.whl (18.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.31+ x86-64

lincs-0.11.0-cp311-cp311-macosx_10_9_universal2.whl (21.0 MB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

lincs-0.11.0-cp310-cp310-win_amd64.whl (5.2 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

lincs-0.11.0-cp310-cp310-manylinux_2_31_x86_64.whl (18.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.31+ x86-64

lincs-0.11.0-cp310-cp310-macosx_11_0_x86_64.whl (18.1 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ x86-64

lincs-0.11.0-cp39-cp39-win_amd64.whl (5.2 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

lincs-0.11.0-cp39-cp39-manylinux_2_31_x86_64.whl (18.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.31+ x86-64

lincs-0.11.0-cp39-cp39-macosx_11_0_x86_64.whl (18.1 MB view hashes)

Uploaded CPython 3.9 macOS 11.0+ x86-64

lincs-0.11.0-cp38-cp38-win_amd64.whl (5.2 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

lincs-0.11.0-cp38-cp38-manylinux_2_31_x86_64.whl (18.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.31+ x86-64

lincs-0.11.0-cp38-cp38-macosx_11_0_x86_64.whl (18.1 MB view hashes)

Uploaded CPython 3.8 macOS 11.0+ x86-64

lincs-0.11.0-cp37-cp37m-win_amd64.whl (5.2 MB view hashes)

Uploaded CPython 3.7m Windows x86-64

lincs-0.11.0-cp37-cp37m-manylinux_2_31_x86_64.whl (18.9 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.31+ x86-64

lincs-0.11.0-cp37-cp37m-macosx_11_0_x86_64.whl (18.1 MB view hashes)

Uploaded CPython 3.7m macOS 11.0+ x86-64

Supported by

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