<h1>kMap.py</h1>

<p>kMap.py is a python based program for simulation and data analysis in photoemission tomography. The underlying theoretical methodology is described in the following publication:</p>
<p>Dominik Brandstetter, Xiaosheng Yang, Daniel Lüftner, F. Stefan Tautz, and Peter Puschnig, "kMap.py: A Python program for simulation and data analysis in photoemission tomography", Computer Physics Communications, available online (2021) <a href="https://doi.org/10.1016/j.cpc.2021.107905">https://doi.org/10.1016/j.cpc.2021.107905</a></p>
<p>Please cite this work when using results from kMap.py in your publications.</p>

<hr/>

<p>Regardless of whether you are a first time user or are familiar with the previous version (Map.py), we highly recommend you watch the following short tutorial series on how to effectively use kMap.py:<br><br><a href="https://www.youtube.com/playlist?list=PLAoZOqtibC5ypO57SU4emdelPzSGQRO8c">https://www.youtube.com/playlist?list=PLAoZOqtibC5ypO57SU4emdelPzSGQRO8c</a></p>
<p>If you come from the previous version of kMap.py (Map.py), here is a short rundown of what changed or what new possibilities this version offers:</p>

<ul>
<li>
<p>Instead of a fixed number of certain tabs (i.e. data sets) you can now load as many as you want. Loading a corresponding file will dynamically initiate a new tab. Those tabs can be closed at any time and function independently.</p>
</li>

<li>
<p>"Gas Phase Simulation" has been renamed to "Orbitals" and "Experimental Data" is now called "Sliced Data". The latter also now encompasses what used to be in the "ARPES Simulation" tab in Map.py.
</p>
</li>

<li>
<p>"Sliced Data" refers to a more general approach of 3D data being presented as slices. This includes the new construction of such Sliced Data from gas-phase orbitals, but also the ability to switch between the axis used to denote the slices. For example, one is no longer restricted to only have (kx,ky) momentum maps in dependency of binding energy, but can switch to a (E_kin,kx) representation depended on the ky axis at any time.
</p>
</li>

<li>
<p>Many features have been moved to the new menubar. The structuring is heavily orientated along with common applications and thus should be intuitively useable.</p>
</li>

<li>
<p>There are now settings files in the .ini format. Under "Preferences" you will find the option to display and edit them right there in a simplified text editor. This includes settings like colors or tolerance for the lmfit process but also shortcuts and log messages.
<br>There is also the option to reload the settings during runtime! Already done actions won't be reversed but new actions will use the updated settings (with some exceptions).
<br>For this purpose each settings file exits in two versions. Copy the settings you want to change from the _default file to the _user file. This way the your settings will remain persistent even through updates.</p>
</li>

<li>
<p>The code was completely rewritten. This was necessary to make kMap.py much more robust, modular and future-proof. On the flip side, through heavy use of object orientation and class structure some people may find it more difficult to get into the code. The structure tries to stay as close as possible to the MVC pattern, common open source project standards and documentation will be provided to ease this process.</p>
</li>

<li>
<p>Last but not least, kMap.py comes with an ever-increasing number of unit tests and example scripts.</p>
</li>
</ul>

<hr />

<p><strong> Any feedback whatsoever, bug reports, ideas, struggles with the program or other comments are highly appreciated. Please send your thoughts to</strong></p>
<ul>
<li>dominik.brandstetter@edu.uni-graz.at</li>
</ul>
<p>(For bug reports please use the "make report" command. For more information see README)</p>