Initial commit
This commit is contained in:
commit
211eaffcb4
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
10
.idea/AMM.iml
generated
Normal file
10
.idea/AMM.iml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.8 (AMM)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
4
.idea/misc.xml
generated
Normal file
4
.idea/misc.xml
generated
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (AMM)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/AMM.iml" filepath="$PROJECT_DIR$/.idea/AMM.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
32
exspectrum
Normal file
32
exspectrum
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Excitation spectrum ; written at 2021-12-23 18:00:19
|
||||||
|
# Exc. energy (Eh) energy (eV) energy (cm-1) energy (nm) Osc.(vel) Osc.(len)
|
||||||
|
1 a 0.081632 2.22132 17916.184 558.155 0.59324546 0.63875147
|
||||||
|
2 a 0.097816 2.66170 21468.087 465.808 0.01013849 0.01104033
|
||||||
|
3 a 0.101932 2.77371 22371.482 446.998 0.18173513 0.19477660
|
||||||
|
4 a 0.119431 3.24989 26212.132 381.503 0.64359780 0.65859697
|
||||||
|
5 a 0.121826 3.31506 26737.749 374.003 0.07358580 0.07053363
|
||||||
|
6 a 0.124153 3.37836 27248.345 366.995 0.58084889 0.60692493
|
||||||
|
7 a 0.133071 3.62104 29205.673 342.399 0.44634456 0.45611903
|
||||||
|
8 a 0.136025 3.70142 29853.943 334.964 0.01543649 0.01724145
|
||||||
|
9 a 0.138425 3.76673 30380.708 329.156 0.06870782 0.06655899
|
||||||
|
10 a 0.139343 3.79172 30582.302 326.986 0.09547385 0.09610700
|
||||||
|
11 a 0.139697 3.80135 30659.928 326.159 0.31050776 0.32244116
|
||||||
|
12 a 0.141117 3.83998 30971.558 322.877 0.04646558 0.04287950
|
||||||
|
13 a 0.143354 3.90086 31462.590 317.838 0.00140278 0.00117080
|
||||||
|
14 a 0.143957 3.91727 31594.889 316.507 0.07233739 0.07315710
|
||||||
|
15 a 0.144246 3.92514 31658.403 315.872 0.00752599 0.00818926
|
||||||
|
16 a 0.144772 3.93944 31773.723 314.725 0.00168315 0.00167697
|
||||||
|
17 a 0.145201 3.95111 31867.834 313.796 0.00226231 0.00201420
|
||||||
|
18 a 0.145758 3.96629 31990.274 312.595 0.00003515 0.00003452
|
||||||
|
19 a 0.146169 3.97747 32080.469 311.716 0.00837502 0.00898456
|
||||||
|
20 a 0.146494 3.98631 32151.783 311.025 0.00974370 0.00905770
|
||||||
|
21 a 0.148519 4.04140 32596.061 306.786 0.23894747 0.26006671
|
||||||
|
22 a 0.149195 4.05981 32744.572 305.394 0.01999536 0.02004168
|
||||||
|
23 a 0.149254 4.06140 32757.367 305.275 0.00860917 0.00890324
|
||||||
|
24 a 0.149750 4.07490 32866.276 304.263 0.02541908 0.02508246
|
||||||
|
25 a 0.151961 4.13507 33351.586 299.836 0.00081672 0.00066642
|
||||||
|
26 a 0.152157 4.14040 33394.610 299.450 0.00012992 0.00013872
|
||||||
|
27 a 0.152234 4.14249 33411.414 299.299 0.00004462 0.00004261
|
||||||
|
28 a 0.153115 4.16647 33604.808 297.576 0.03615181 0.04035899
|
||||||
|
29 a 0.153534 4.17787 33696.766 296.764 0.00006776 0.00007273
|
||||||
|
30 a 0.154251 4.19738 33854.151 295.385 0.03348557 0.03561208
|
80
exspectrum_plotter.py
Normal file
80
exspectrum_plotter.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
"""
|
||||||
|
Turbomole-Spectrum-Plotter
|
||||||
|
(c) 2022 Lukas Schank
|
||||||
|
|
||||||
|
This script will run through all subfolders of the given folder and plot excitation spectra of TDDFT calculations.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def exspectrum_plotter(data_folder: str, output_folder: str):
|
||||||
|
|
||||||
|
# convert input to path objects
|
||||||
|
data_folder = Path(data_folder)
|
||||||
|
output_folder = Path(output_folder)
|
||||||
|
if not output_folder.exists():
|
||||||
|
output_folder.mkdir()
|
||||||
|
|
||||||
|
# convert data to plot
|
||||||
|
for data_file in data_folder.glob('**/exspectrum'): # path.glob iterates through given folder for pattern
|
||||||
|
# read data
|
||||||
|
rawdata = pd.read_csv(
|
||||||
|
data_file,
|
||||||
|
sep='\s+', # seperator is one or more spaces
|
||||||
|
skiprows=2, # skip header rows
|
||||||
|
header=None # prevent getting first numbers as header
|
||||||
|
)
|
||||||
|
data_energy = np.array(rawdata.iloc[:, 3])
|
||||||
|
data_osc_strength = np.array(rawdata.iloc[:, 6])
|
||||||
|
|
||||||
|
# calculate gauss broadening for spectrum
|
||||||
|
def gauss_spectrum(energy, osc_strength, sigma, gauss_energy_range):
|
||||||
|
gauss_osc_strength = []
|
||||||
|
for E_i in gauss_energy_range:
|
||||||
|
tot = 0
|
||||||
|
for E_j, osc in zip(energy, osc_strength):
|
||||||
|
tot += osc * np.exp(-(((E_j - E_i) / sigma) ** 2))
|
||||||
|
gauss_osc_strength.append(tot)
|
||||||
|
return gauss_osc_strength
|
||||||
|
|
||||||
|
calc_energy_range = np.linspace(0, 6, num=500, endpoint=True) # x values for calculated spectrum
|
||||||
|
calc_sigma = 0.15 # std for gauss broadening
|
||||||
|
calc_osc_strength = gauss_spectrum(data_energy, data_osc_strength, calc_sigma, calc_energy_range)
|
||||||
|
|
||||||
|
# create plot
|
||||||
|
fig, ax = plt.subplots(dpi=300, figsize=(6, 4))
|
||||||
|
ax.plot(calc_energy_range, calc_osc_strength, "-k") # plot calculated spectrum
|
||||||
|
for plt_energy, plt_osc_strength in zip(data_energy, data_osc_strength):
|
||||||
|
ax.plot((plt_energy, plt_energy), (0, plt_osc_strength), c="k") # plot lines from data
|
||||||
|
ax.set_xlabel("Energy / eV", fontsize=16)
|
||||||
|
ax.set_ylabel("Osc. Strength / a.u.", fontsize=16)
|
||||||
|
ax.xaxis.set_tick_params(labelsize=14, width=1.5)
|
||||||
|
ax.yaxis.set_tick_params(labelsize=14, width=1.5)
|
||||||
|
for axis in ['top', 'bottom', 'left', 'right']:
|
||||||
|
ax.spines[axis].set_linewidth(1.5)
|
||||||
|
ax.set_xlim(1.5, 5)
|
||||||
|
plt.tight_layout()
|
||||||
|
|
||||||
|
# save plot
|
||||||
|
data_name = Path(data_file)
|
||||||
|
output_name = data_name.parts[data_folder.parts.__len__()]
|
||||||
|
for name in data_name.parts[(data_folder.parts.__len__() + 1):]:
|
||||||
|
output_name += "_" + name
|
||||||
|
output_name += ".pdf" # change here for pdf or png output
|
||||||
|
output_path = output_folder / output_name
|
||||||
|
plt.savefig(output_path)
|
||||||
|
plt.close(fig) # close plot
|
||||||
|
|
||||||
|
|
||||||
|
# getting commandline input and pass it to function
|
||||||
|
if __name__ == "__main__":
|
||||||
|
a = str(sys.argv[1])
|
||||||
|
b = str(sys.argv[2])
|
||||||
|
exspectrum_plotter(a, b)
|
||||||
|
|
||||||
|
# python exspectrum_plotter.py "C:\Path\to\Calculations" "C:\path\to\results"
|
Loading…
x
Reference in New Issue
Block a user