.. _install: Installation ============ ``Nemaktis`` is a mixture of C++ and python codes, and has been successfully tested both on Windows 10 and Linux. The recommended way of installing and using Nematkis is through the package manager ``mamba`` (see next subsection). If you are an experienced Mac user and want to become maintainer of a MacOS version of Nematkis (using mamba), please contact me (https://nemaktis.readthedocs.io/en/latest/intro/overview.html#contact). Otherwise, it is probably possible to compile and use the software by hand on other OSs than the ones mentioned above (windows 7, macOS...), provided you know what you are doing :) With Mamba (windows or linux) ----------------------------- a. Install Miniforge ................... The simplest way of installing the ``Nemaktis`` package is through the package manager ``mamba`` (no compilation and no dependency to be installed by hand). I provide precompiled packages for both **Linux** and **Windows 10**, which means the following method will work on these two operating systems. ``mamba`` is a package manager based on the ``conda`` python package manager, but with far better performance since it is written in C++. Previous versions of Nemaktis were using ``conda`` (or ``mamba`` installed on top of ``conda``) but this proved to be too difficult to maintain because of these poor performances. For this reason, any Nemaktis version >=1.4.7 requires the ``Miniforge`` distribution to be installed locally on your computer (i.e. on your user folder), and will not necessarily work with the ``Anaconda`` or ``Miniconda`` distributions. The installation files of ``Miniforge`` for Windows/Linux are available at this address (be careful to choose the ``Miniforge`` distribution, not the ``Miniforge-pypy3`` distribution): https://github.com/conda-forge/miniforge#miniforge3 b. Install Nemaktis on the command line ....................................... Open a terminal (Windows: application "Miniforge prompt" installed with Miniforge, Linux: any terminal) and type the following command: :: mamba create -n nm -c warthan07 -y nemaktis (Optional) If you want a python editor (e.g. ``spyder``), you have to also type the following commands: :: mamba activate nm conda install spyder The above command should have automatically created a shortcut for ``Spyder`` (there is currently a bug in mamba for creating it, which is why the above command uses conda), usually named ``Spyder (nm)`` to make it clear that it will automatically activate the newly created ``nm`` environment. Always use this shortcut when using nemaktis (it can be searched quickly on windows with the shortcut ``Win`` + ``S``, or ``Win`` on Ubuntu) or alternatively type the following command in a terminal: :: mamba activate nm spyder You can also, of course, run directly your python scripts in the terminal after activating the ``nm`` environment. c. How to update ................ I do not recommend updating nematkis using the command ``mamba update``, since I do not compile Nematkis sufficiently often for a correct update of all dependencies. In other words, running ``mamba update`` has the risk of breaking your mamba environment! I apologize for this current limitation, which mostly stems from my inexperience at mamba packaging with complex dependencies. In this case, how can you safely update Nemaktis? The simplest way is to fully remove the mamba environment ``nm``, either by removing the folder "envs/nm" inside the root folder of Miniforge or by opening a terminal ("Miniforge prompt" for windows, any terminal for linux) and typing: :: mamba remove --name nm --all Then, simply repeat the installation step b above. Another possibility is to repeat the installation step b with a different environment name than ``nm``, for example ``nm[version number]``. Although this method is probably fine to test new features of the software without removing the old version , it is probably not very good in the long term since each mamba environment takes a non-negligible portion of disk space. Developper method ----------------- If you want to be able to modify the code, but still want to enjoy the simplicity of mamba packages (no relative paths to manage, everything works as with a system package), you can build yourselves the nemaktis package for Linux: 1. Get the code of the ``Nemaktis`` repository: :: git clone git@github.com:warthan07/Nemaktis.git And implements the changes that you want. For the C++ codes, compilation steps are provided in the subfolders bpm-solver and rt-solver if you want to test them locally (in which case you will have to install yourselves the dependencies listed in each CMakeLists). 2. In a terminal, go to the subfolder **conda_recipe** of the ``Nemaktis`` repository and type the following (the first line is only needed if the build environment does not exist yet): :: mamba create -n build -y rattler-build mamba activate build 3. Run the following command, which will create an ``output`` folder in which the conda package is built: :: rattler-build build 4. Once the package is built, you can install it in a new ``nm`` environment by typing: :: mamba create -n nm -c file://{ full path to output folder } nemaktis