"""
@DRAFT
Network communication. Downloading files. Checking links etc.
"""
import os
import json
import numpy as np
import matplotlib.pyplot as plt
from DatabankLib import NMLDB_SIMU_PATH, NMLDB_EXP_PATH
def plotFormFactor( # noqa: N802
exp_form_factor, k, legend, plot_color):
""":meta private:"""
x_vals = []
y_vals = []
for i in exp_form_factor:
x_vals.append(i[0])
y_vals.append(k * i[1])
plt.plot(x_vals, y_vals, label=legend, color=plot_color, linewidth=4.0)
plt.xlabel(r"$q_{z} [Å^{-1}]$", size=20)
plt.ylabel(r"$|F(q_{z})|$", size=20)
plt.xticks(size=20)
plt.yticks(size=20)
plt.xlim([0, 0.69])
plt.ylim([-10, 250])
plt.legend(loc="upper right")
plt.savefig("FormFactor.pdf")
def plotOrderParameters(OPsim, OPexp): # noqa
""":meta private:"""
xValuesHG = [] # noqa: N806
xValuesSN1 = [] # noqa: N806
xValuesSN2 = [] # noqa: N806
yValuesHGsim = [] # noqa: N806
yValuesSN1sim = [] # noqa: N806
yValuesSN2sim = [] # noqa: N806
yValuesHGsimERR = [] # noqa: N806
yValuesSN1simERR = [] # noqa: N806
yValuesSN2simERR = [] # noqa: N806
yValuesHGexp = [] # noqa: N806
yValuesSN1exp = [] # noqa: N806
yValuesSN2exp = [] # noqa: N806
xValuesHGexp = [] # noqa: N806
xValuesSN1exp = [] # noqa: N806
xValuesSN2exp = [] # noqa: N806
sn1carbons = {
"M_G1C3_M M_G1C3H1_M": 2,
"M_G1C3_M M_G1C3H2_M": 2,
"M_G1C4_M M_G1C4H1_M": 3,
"M_G1C4_M M_G1C4H2_M": 3,
"M_G1C5_M M_G1C5H1_M": 4,
"M_G1C5_M M_G1C5H2_M": 4,
"M_G1C6_M M_G1C6H1_M": 5,
"M_G1C6_M M_G1C6H2_M": 5,
"M_G1C7_M M_G1C7H1_M": 6,
"M_G1C7_M M_G1C7H2_M": 6,
"M_G1C8_M M_G1C8H1_M": 7,
"M_G1C8_M M_G1C8H2_M": 7,
"M_G1C9_M M_G1C9H1_M": 8,
"M_G1C9_M M_G1C9H2_M": 8,
"M_G1C10_M M_G1C10H1_M": 9,
"M_G1C10_M M_G1C10H2_M": 9,
"M_G1C11_M M_G1C11H1_M": 10,
"M_G1C11_M M_G1C11H2_M": 10,
"M_G1C12_M M_G1C12H1_M": 11,
"M_G1C12_M M_G1C12H2_M": 11,
"M_G1C13_M M_G1C13H1_M": 12,
"M_G1C13_M M_G1C13H2_M": 12,
"M_G1C14_M M_G1C14H1_M": 13,
"M_G1C14_M M_G1C14H2_M": 13,
"M_G1C15_M M_G1C15H1_M": 14,
"M_G1C15_M M_G1C15H2_M": 14,
"M_G1C16_M M_G1C16H1_M": 15,
"M_G1C16_M M_G1C16H2_M": 15,
"M_G1C17_M M_G1C17H1_M": 16,
"M_G1C17_M M_G1C17H2_M": 16,
"M_G1C17_M M_G1C17H3_M": 16,
}
sn2carbons = {
"M_G2C3_M M_G2C3H1_M": 2,
"M_G2C3_M M_G2C3H2_M": 2,
"M_G2C4_M M_G2C4H1_M": 3,
"M_G2C4_M M_G2C4H2_M": 3,
"M_G2C5_M M_G2C5H1_M": 4,
"M_G2C5_M M_G2C5H2_M": 4,
"M_G2C6_M M_G2C6H1_M": 5,
"M_G2C6_M M_G2C6H2_M": 5,
"M_G2C7_M M_G2C7H1_M": 6,
"M_G2C7_M M_G2C7H2_M": 6,
"M_G2C8_M M_G2C8H1_M": 7,
"M_G2C8_M M_G2C8H2_M": 7,
"M_G2C9_M M_G2C9H1_M": 8,
"M_G2C9_M M_G2C9H2_M": 8,
"M_G2C10_M M_G2C10H1_M": 9,
"M_G2C10_M M_G2C10H2_M": 9,
"M_G2C11_M M_G2C11H1_M": 10,
"M_G2C11_M M_G2C11H2_M": 10,
"M_G2C12_M M_G2C12H1_M": 11,
"M_G2C12_M M_G2C12H2_M": 11,
"M_G2C13_M M_G2C13H1_M": 12,
"M_G2C13_M M_G2C13H2_M": 12,
"M_G2C14_M M_G2C14H1_M": 13,
"M_G2C14_M M_G2C14H2_M": 13,
"M_G2C15_M M_G2C15H1_M": 14,
"M_G2C15_M M_G2C15H2_M": 14,
"M_G2C16_M M_G2C16H1_M": 15,
"M_G2C16_M M_G2C16H2_M": 15,
"M_G2C17_M M_G2C17H1_M": 16,
"M_G2C17_M M_G2C17H2_M": 16,
"M_G2C17_M M_G2C17H3_M": 16,
"M_G2C18_M M_G2C18H1_M": 17,
"M_G2C18_M M_G2C18H2_M": 17,
"M_G2C18_M M_G2C18H3_M": 17,
"M_G2C19_M M_G2C19H1_M": 18,
"M_G2C19_M M_G2C19H2_M": 18,
"M_G2C19_M M_G2C19H3_M": 18,
}
HGcarbons = { # noqa: N806
"M_G3N6C1_M M_G3N6C1H1_M": 1,
"M_G3N6C1_M M_G3N6C1H2_M": 1,
"M_G3N6C1_M M_G3N6C1H3_M": 1,
"M_G3N6C2_M M_G3N6C2H1_M": 1,
"M_G3N6C2_M M_G3N6C2H2_M": 1,
"M_G3N6C2_M M_G3N6C2H3_M": 1,
"M_G3N6C3_M M_G3N6C3H1_M": 1,
"M_G3N6C3_M M_G3N6C3H2_M": 1,
"M_G3N6C3_M M_G3N6C3H3_M": 1,
"M_G3C5_M M_G3C5H1_M": 2,
"M_G3C5_M M_G3C5H2_M": 2,
"M_G3C4_M M_G3C4H1_M": 3,
"M_G3C4_M M_G3C4H2_M": 3,
"M_G3_M M_G3H1_M": 4,
"M_G3_M M_G3H2_M": 4,
"M_G2_M M_G2H1_M": 5,
"M_G1_M M_G1H1_M": 6,
"M_G1_M M_G1H2_M": 6,
}
for key in OPsim:
if "M_G1C" in key:
try:
xValuesSN1.append(sn1carbons[key])
yValuesSN1sim.append(float(OPsim[key][0][0]))
yValuesSN1simERR.append(float(OPsim[key][0][2]))
yValuesSN1exp.append(OPexp[key][0][0])
xValuesSN1exp.append(sn1carbons[key])
except Exception:
pass
elif "M_G2C" in key:
try:
xValuesSN2.append(sn2carbons[key])
yValuesSN2sim.append(float(OPsim[key][0][0]))
yValuesSN2simERR.append(float(OPsim[key][0][2]))
yValuesSN2exp.append(OPexp[key][0][0])
xValuesSN2exp.append(sn2carbons[key])
except Exception:
pass
elif "M_G3" in key or "M_G2_M" in key or "M_G1_M" in key:
try:
xValuesHG.append(HGcarbons[key])
yValuesHGsim.append(float(OPsim[key][0][0]))
yValuesHGsimERR.append(float(OPsim[key][0][2]))
yValuesHGexp.append(OPexp[key][0][0])
xValuesHGexp.append(HGcarbons[key])
except Exception:
pass
plt.rc("font", size=15)
plt.errorbar(
xValuesHGexp, yValuesHGexp, yerr=0.02, fmt=".", color="black", markersize=25
)
plt.errorbar(
xValuesHG,
yValuesHGsim,
yerr=yValuesHGsimERR,
fmt=".",
color="red",
markersize=20,
)
my_xticks = ["\u03B3", "\u03B2", "\u03B1", "$g_{1}$", "$g_{2}$", "$g_{3}$"]
plt.xticks([1, 2, 3, 4, 5, 6], my_xticks, size=20)
plt.yticks(size=20)
plt.ylabel(r"$S_{CH}$", size=25)
plt.savefig("HG.pdf")
plt.show()
plt.text(2, -0.04, "sn-1", fontsize=25)
plt.xticks(np.arange(min(xValuesSN1), max(xValuesSN1) + 1, 2.0))
plt.plot(xValuesSN1, yValuesSN1sim, color="red")
plt.plot(xValuesSN1exp, yValuesSN1exp, color="black")
plt.errorbar(
xValuesSN1,
yValuesSN1sim,
yerr=yValuesSN1simERR,
fmt=".",
color="red",
markersize=25,
)
plt.errorbar(
xValuesSN1exp, yValuesSN1exp, yerr=0.02, fmt=".", color="black", markersize=20
)
plt.ylabel(r"$S_{CH}$", size=25)
plt.xticks(size=20)
plt.yticks(size=20)
plt.savefig("sn-1.pdf")
plt.show()
plt.text(2, -0.04, "sn-2", fontsize=25)
plt.xticks(np.arange(min(xValuesSN2), max(xValuesSN2) + 1, 2.0))
plt.plot(xValuesSN2, yValuesSN2sim, color="red")
plt.plot(xValuesSN2exp, yValuesSN2exp, color="black")
plt.errorbar(
xValuesSN2, yValuesSN2sim, yValuesSN2simERR, fmt=".", color="red", markersize=25
)
plt.errorbar(
xValuesSN2exp, yValuesSN2exp, yerr=0.02, fmt=".", color="black", markersize=20
)
plt.xlabel("Carbon", size=25)
plt.ylabel(r"$S_{CH}$", size=25)
plt.xticks(size=20)
plt.yticks(size=20)
plt.savefig("sn-2.pdf")
plt.show()
[docs]
def plotSimulation(system, lipid: str): # noqa: N802
"""
Creates plots of form factor and C-H bond order parameters for the selected
``lipid`` from a simulation given by system.
:param system: NMRlipids databank ID number of the simulation
:param lipid: universal molecul name of the lipid
"""
path = os.path.join(NMLDB_SIMU_PATH, system['path'])
ff_path_sim = os.path.join(path, 'FormFactor.json')
op_path_sim = os.path.join(path, lipid + 'OrderParameters.json')
ffqual_fpath = os.path.join(path, 'FormFactorQuality.json')
print('DOI: ', system['DOI'])
try:
with open(ffqual_fpath) as json_file:
ff_quality = json.load(json_file)
print('Form factor quality: ', ff_quality[0])
ffdir = os.path.join(NMLDB_EXP_PATH, 'FormFactors',
system['EXPERIMENT']['FORMFACTOR'])
for subdir, dirs, files in os.walk(ffdir):
for filename in files:
if filename.endswith('_FormFactor.json'):
ff_path_exp = subdir + '/' + filename
with open(ff_path_exp) as json_file:
ff_exp = json.load(json_file)
except Exception:
print('Force field quality not found')
with open(op_path_sim) as json_file:
op_sim = json.load(json_file)
op_exp = {}
for exp_op_folder in list(system['EXPERIMENT']['ORDERPARAMETER'][lipid].values()):
op_path_exp = os.path.join(
NMLDB_EXP_PATH, 'OrderParameters', exp_op_folder,
lipid + '_Order_Parameters.json')
with open(op_path_exp) as json_file:
op_exp.update(json.load(json_file))
try:
with open(ff_path_sim) as json_file:
ff_sim = json.load(json_file)
plotFormFactor(ff_sim, 1, "Simulation", "red")
plotFormFactor(ff_exp, ff_quality[1], "Experiment", "black")
plt.show()
except Exception:
plt.show()
print('Form factor plotting failed')
plotOrderParameters(op_sim, op_exp)