Metadata-Version: 2.1
Name: dosmaster
Version: 1.8.25
Summary: DOS(Density Of States) Plot Smartly in Terminal
Home-page: https://github.com/pyj6767/DOSMaster
Author: Youngjun Park, Jaeseon Kim in CNMD
Author-email: yjpark29@postech.ac.kr
License: MIT
Keywords: vasp dos
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.7.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: matplotlib
Requires-Dist: pandas >=1.3.5
Requires-Dist: ase >=3.22.1
Requires-Dist: colorama >=0.4.6
Requires-Dist: PyYAML
Requires-Dist: importlib-metadata
Requires-Dist: requests

# DOSMaster

[![PyPI](https://img.shields.io/pypi/v/dosmaster.svg)](https://pypi.org/project/dosmaster/)
[![GitHub](https://img.shields.io/badge/GitHub-DOSMaster-green)](https://github.com/pyj6767/DOSMaster)

**Program Name:** DOSMaster  
**Author:** Youngjun Park (yjpark29@postech.ac.kr)  
**Inspired by:** Jaeseon Kim (CNMD)  
**Tested by:** Changhun Kim (CNMD), Suyun Chae (CNMD)  
**Description:** A smart, highly customizable DOS plotting tool designed for terminal environments.

> Version 1.8.3 and above will be publicly released to all CNMD members.

<p align="center">
<img src="https://github.com/user-attachments/assets/e01ac05e-5180-4485-a01d-306459d4a4d6" style="width:600px">
</img>

<img src="https://github.com/user-attachments/assets/859c7b95-6acb-49f6-bf01-2ecfadc00ba6" style="width:600px">
</img>
</p>

---

## Release History

| Version | Changes |
|---------|---------|
| 1.1 | Improved loading speed on restart (by Jaeseon Kim) |
| 1.2 | Added final data file export feature |
| 1.3 | Bug fixes |
| 1.4.2 | Refactored for PyPI packaging |
| 1.7.13 | Full packaging; added DOS_Sum, Average_DOS, Axis_Optimization, and various performance improvements |
| 1.8.1 | Fixed label bugs; added settings save/load, DOS plot save/load, shift_x_axis, extended sequential number input, and legend display toggle |
| 1.8.3 | Added ISPIN = 1 calculation support; various bug fixes |
| 1.8.4 | License update |
| 1.8.5 | Fixed f-orbital error |
| 1.8.8 | Fixed ylim optimization error when saving plot in current directory |
| 1.8.10 | Fixed f-orbital sum error |
| 1.8.12 | Fixed import order error |
| 1.8.15 | Fixed graph_editor back feature (suggested by Hyeongbin Park, CNMD) |
| 1.8.16 | Added Gaussian smearing feature (contributed by Siyeong Park, CNMD) |
| 1.8.22 | Added package version check feature |
| 1.8.24 | Fixed PROCAR bug; code generator in development |
| 1.8.25 | README update |

---

## Features

1. **Add Atom DOS** — Add the DOS of a desired atom to the plot.
2. **DOS Projection** — Project a specific DOS onto a desired orbital.
3. **Sum DOS** — Sum the contributions of selected DOS entries.
4. **Average DOS** — Average the contributions of selected DOS entries.
5. **Remove DOS** — Remove a specific DOS from the plot.
6. **Plot only Positive/Negative Part** — Display only the positive or negative region of the DOS plot.
7. **Edit Graph Style** — Customize the graph style to your preference.

   | Index | Parameter | Description |
   |:-----:|-----------|-------------|
   | 1 | `figuresize` | Overall size of the figure (width × height) |
   | 2 | `axis_label_fontsize` | Font size of the x/y axis labels |
   | 3 | `legend_fontsize` | Font size of the legend text |
   | 4 | `ticks_fontsize` | Font size of the axis tick labels |
   | 5 | `title_fontsize` | Font size of the plot title |
   | 6 | `legend_display` | Toggle legend visibility on/off |
   | 7 | `legend_name` | Default legend label for each DOS entry |
   | 8 | `legend_name_user` | User-defined custom legend labels |
   | 9 | `legend_location` | Position of the legend within the plot |
   | 10 | `bbox_to_anchor` | Fine-tune legend position using anchor coordinates |
   | 11 | `line_width` | Line width of the plotted DOS curves |
   | 12 | `xlim` | x-axis range (energy range) |
   | 13 | `ylim` | y-axis range (DOS intensity range) |
   | 14 | `positive_plot` | Toggle display of the positive DOS region |
   | 15 | `negative_plot` | Toggle display of the negative DOS region |
   | 16 | `save_filename` | Output filename when saving the plot |
   | 17 | `save_format` | File format for saving (e.g. png, pdf, svg) |
   | 18 | `save_dpi` | Resolution (DPI) of the saved plot |
   | 19 | `dos_color` | Color of each DOS curve |
   | 20 | `ylim_optimization` | Enable automatic y-axis limit optimization |
   | 21 | `shift_x_axis` | Shift the x-axis by a fixed energy offset |
   | 22 | `smearing` | Apply Gaussian smearing to smooth the DOS curves |
9. **Axis Optimization** — Automatically optimize the y-axis limits to fit the current DOS.
10. **Import Global Custom Setting** — Load your personal graph settings from the package folder.
11. **Save Global Custom Setting** — Save your personal graph settings to the package folder.
12. **Import DOSMaster Plot** — Load a previously saved DOSMaster plot from the current directory.
13. **Save DOSMaster Plot** — Save the current DOSMaster plot to the current directory.

---

## Installation

### Install via PyPI
1. Installation
```bash
pip install dosmaster
```
2. Run DOSMaster
```bash
dosmaster
```

### Install from Source

1. Copy the SSH key from your server:
   ```bash
   cat ~/.ssh/id_rsa.pub
   ```
2. Go to your GitHub account → **Settings** → **SSH and GPG Keys** → **New SSH Key**, then paste the copied key.
3. Clone the repository on your server:
   ```bash
   git clone git@github.com:pyj6767/DOSMaster.git
   ```
4. Requirements
```bash
pip install matplotlib numpy pandas ase colorama
```
5. Set Permissions
```bash
chmod 775 dosmaster
```
6. Run DOSMaster
Navigate to the directory containing your DOS calculation results and run:
```bash
cd [your DOS calculation folder]
dosmaster
```

---

## License

DOSMaster is released under the [MIT License](https://opensource.org/licenses/MIT).
