In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import os
from small_script.myFunctions import *



%matplotlib inline
%load_ext autoreload
%autoreload 2

In [3]:
plt.rcParams['figure.figsize'] = [16.18033, 10]    #golden ratio
plt.rcParams['figure.facecolor'] = 'w'
plt.rcParams['figure.dpi'] = 100

In [16]:
def interaction_well(r, r_min, r_max, kappa):
    return 0.5 * (np.tanh(kappa * (r - r_min)) * np.tanh(kappa * (r_max - r))) + 0.5
def interaction_well_2(r, r_min, r_max, kappa):
    return 0.25 * (1 + np.tanh(kappa * (r-r_min))) * (1 + np.tanh(kappa*(r_max-r)))
def interaction_well_3(r, r_min, r_max, kappa):
    return 0.5 * (np.tanh(kappa * (r-r_min)) + np.tanh(kappa*(r_max-r)))
def interaction_well_4(r, r0, kappa):
    return 0.5 * (np.tanh(kappa * (r-r0))) + 0.5

In [13]:
# for cys. I observed CB CB distance mostly around 3.75, with max at 4.1, min at 3.4
# so I want a well that give over 0.9 for (3.4, 4.1)
# and about 0 for the rest.

In [14]:
plt.rcParams['figure.figsize'] = 0.5* np.array([16.18033, 10])     #golden ratio
plt.rcParams['figure.facecolor'] = 'w'
plt.rcParams['figure.dpi'] = 100

In [17]:
r = np.linspace(-2, 2, 1000)
a = interaction_well_4(r, 0, 1)
plt.plot(r, a)


Out[17]:
[<matplotlib.lines.Line2D at 0x1a1b7e8320>]

In [12]:
r = np.linspace(0, 10, 1000)
a = interaction_well(r, 2.5, 6.5, 5)
plt.plot(r, a)


Out[12]:
[<matplotlib.lines.Line2D at 0x1a24eb4ac8>]

In [13]:
r = np.linspace(1.8, 4, 1000)
a = interaction_well(r, 2.5, 6.5, 5)
plt.plot(r, a)


Out[13]:
[<matplotlib.lines.Line2D at 0x1a24f12c50>]

In [10]:
r = np.linspace(1.8, 4, 1000)
a = interaction_well(r, 3.5, 6.5, 5)
plt.plot(r, a)


Out[10]:
[<matplotlib.lines.Line2D at 0x1a24b5f128>]

In [18]:
r = np.linspace(0, 15, 1000)
kappa = 5
a = interaction_well(r, 4.5, 6.5, kappa)
plt.plot(r, a, label=r"direct, $\Theta^I$")
b = interaction_well(r, 6.5, 9.5, kappa)
plt.plot(r, b, label="mediated, $\Theta^{II}$")
plt.legend()


Out[18]:
<matplotlib.legend.Legend at 0x1a25255320>

In [8]:
r = np.linspace(-1, 1, 1000)

kappa = 10
a = interaction_well(r, -0.3, 0.3, kappa)
plt.plot(r, a)
b = interaction_well(r, -0.5, 0.5, kappa)
plt.plot(r, b)
# plt.plot(r, aa)
plt.ylim([0,1])
# x span corresponding to y 0.1 to 0.9
aa = (a > 0.1) & (a < 0.9)

bb = (b > 0.1) & (b < 0.9)
n = len(aa)
aa[n//2:] = 0
bb[n//2:] = 0
plt.vlines(r[aa][0], 0, 1)
plt.vlines(r[aa][-1], 0, 1)
plt.vlines(r[bb][0], 0, 1, color="red")
plt.vlines(r[bb][-1], 0, 1, color="red")
print("aa", r[aa][-1]  - r[aa][0])
print("bb", r[bb][-1]  - r[bb][0])


aa 0.21821821821821819
bb 0.2182182182182183

In [6]:
r = np.linspace(-5, 5, 1000)

kappa = 2
a = interaction_well(r, -1, 1, kappa)
plt.plot(r, a)
b = interaction_well(r, -2, 2, kappa)
plt.plot(r, b)
# plt.plot(r, aa)
plt.ylim([0,1])
# x span corresponding to y 0.1 to 0.9
aa = (a > 0.1) & (a < 0.9)

bb = (b > 0.1) & (b < 0.9)
n = len(aa)
aa[n//2:] = 0
bb[n//2:] = 0
plt.vlines(r[aa][0], 0, 1)
plt.vlines(r[aa][-1], 0, 1)
plt.vlines(r[bb][0], 0, 1, color="red")
plt.vlines(r[bb][-1], 0, 1, color="red")
print("aa", r[aa][-1]  - r[aa][0])
print("bb", r[bb][-1]  - r[bb][0])


aa 1.1011011011011012
bb 1.0910910910910911

In [12]:
r = np.linspace(-5, 5, 1000)

kappa = 1
a = interaction_well(r, -1, 1, kappa)
plt.plot(r, a)
b = interaction_well(r, -2, 2, kappa)
plt.plot(r, b)
# plt.plot(r, aa)
plt.ylim([0,1])
# x span corresponding to y 0.1 to 0.9
aa = (a > 0.1) & (a < 0.9)

bb = (b > 0.1) & (b < 0.9)
n = len(aa)
aa[n//2:] = 0
bb[n//2:] = 0
plt.vlines(r[aa][0], 0, 1)
plt.vlines(r[aa][-1], 0, 1)
plt.vlines(r[bb][0], 0, 1, color="red")
plt.vlines(r[bb][-1], 0, 1, color="red")
print("aa", r[aa][-1]  - r[aa][0])
print("bb", r[bb][-1]  - r[bb][0])


aa 2.1021021021021022
bb 2.2022022022022023

In [6]:
k_bin = 100

r = np.linspace(0.4, 0.45, 1000)
a = 0.5*(1-np.tanh(k_bin*(r-0.42)))
plt.plot(r, a)


Out[6]:
[<matplotlib.lines.Line2D at 0x1a171e07f0>]

In [20]:
k_bin = 20

r = np.linspace(1.8, 2.3, 1000)
a = 0.5*(1+np.tanh(k_bin*(2.1-r)))
plt.plot(r, a)


Out[20]:
[<matplotlib.lines.Line2D at 0x1a25c35828>]

In [23]:
k_bin = 20

r = np.linspace(0, 0.3, 1000)
a = 0.5*(1+np.tanh(k_bin*(0.2-r)))
plt.plot(r, a)


Out[23]:
[<matplotlib.lines.Line2D at 0x1a26df75c0>]

In [25]:
np.arange(-40, 40, 4)


Out[25]:
array([-40, -36, -32, -28, -24, -20, -16, -12,  -8,  -4,   0,   4,   8,
        12,  16,  20,  24,  28,  32,  36])

In [10]:
r = np.linspace(-15, 15, 1000)
a = interaction_well(r, -5, 5, 0.2)
plt.plot(r, a)


Out[10]:
[<matplotlib.lines.Line2D at 0x101e264a8>]

In [11]:
r = np.linspace(-15, 30, 1000)
a = interaction_well(r, -10, 20, 10)
plt.plot(r, a)


Out[11]:
[<matplotlib.lines.Line2D at 0x101e8cc18>]

In [15]:
r = np.linspace(-12, -8, 1000)
a = interaction_well(r, -10, 20, 5)
plt.plot(r, a)


Out[15]:
[<matplotlib.lines.Line2D at 0x1a1852f208>]

In [5]:
kappa = 4
rmin = 4.5
rmax = 6.5

r = np.linspace(0, 10, 1000)

a = interaction_well(r, rmin, rmax, kappa)

b = interaction_well_2(r, rmin, rmax, kappa)

c = interaction_well_3(r, rmin, rmax, kappa)

plt.plot(r, a)
plt.plot(r, b+0.01)  # for visual
plt.plot(r, c-0.01)


Out[5]:
[<matplotlib.lines.Line2D at 0x1a24073470>]

In [11]:
r = np.linspace(-10, 10, 1000)

a = interaction_well(r, -10, 10, 1.0)
plt.plot(r, a)
plt.ylim([0,1])


Out[11]:
(0, 1)

In [15]:
r = np.linspace(-1, 1, 1000)

a = interaction_well(r, -1, 1, 1.0)
plt.plot(r, a)
b = interaction_well(r, -2, 2, 1.0)
plt.plot(r, b)
plt.ylim([0,1])


Out[15]:
(0, 1)

In [49]:
r = np.linspace(-5, 5, 1000)

a = interaction_well(r, -1, 1, 2.0)
plt.plot(r, a)
b = interaction_well(r, -2, 2, 2.0)
plt.plot(r, b)
# plt.plot(r, aa)
plt.vlines(r[aa][0], 0, 1)
plt.vlines(r[aa][-1], 0, 1)
plt.ylim([0,1])


Out[49]:
(0, 1)

In [50]:
# x span corresponding to y 0.1 to 0.9
aa = (a > 0.1) & (a < 0.9)
bb = (b > 0.1) & (b < 0.9)

In [51]:
n = len(aa)
aa[n//2:] = 0
bb[n//2:] = 0

In [52]:
r[aa][-1]  - r[aa][0]


Out[52]:
1.1011011011011012

In [53]:
r[bb][-1]  - r[bb][0]


Out[53]:
1.0910910910910911

In [58]:
r = np.linspace(-5, 5, 1000)

kappa = 1
a = interaction_well(r, -1, 1, kappa)
plt.plot(r, a)
b = interaction_well(r, -2, 2, kappa)
plt.plot(r, b)
# plt.plot(r, aa)
plt.ylim([0,1])
# x span corresponding to y 0.1 to 0.9
aa = (a > 0.1) & (a < 0.9)

bb = (b > 0.1) & (b < 0.9)
n = len(aa)
aa[n//2:] = 0
bb[n//2:] = 0
plt.vlines(r[aa][0], 0, 1)
plt.vlines(r[aa][-1], 0, 1)
plt.vlines(r[bb][0], 0, 1, color="red")
plt.vlines(r[bb][-1], 0, 1, color="red")
print("aa", r[aa][-1]  - r[aa][0])
print("bb", r[bb][-1]  - r[bb][0])


aa 2.1021021021021022
bb 2.2022022022022023

In [68]:
def get_span(kappa, r_min=5, r_max=10):
    r = np.linspace(r_min-5, r_max+5, 1000)
    a = interaction_well(r, r_min, r_max, kappa)
    # x span corresponding to y 0.1 to 0.9
    aa = (a > 0.1) & (a < 0.9)
    n = len(aa)
    aa[n//2:] = 0
    a_span = r[aa][-1]  - r[aa][0]
    return a_span

In [74]:
kappa_list = range(1, 20)
span_list = []
for kappa in kappa_list:
    span_list.append(get_span(kappa))

In [75]:
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(kappa_list, 1/np.array(span_list))
ax.set_aspect('equal')



In [ ]:


In [ ]:


In [19]:
plt.rcParams['text.usetex'] = True

In [24]:
plt.rcParams['figure.figsize'] = 0.5*np.array([16.18033, 10])    #golden ratio
plt.rcParams['figure.facecolor'] = 'w'
plt.rcParams['figure.dpi'] = 100

In [33]:
r = np.linspace(2, 12, 1000)
a = interaction_well_2(r, rmin, rmax, kappa)
a_2 = interaction_well_2(r, 6.5, 9.5, kappa)
plt.plot(r, a, label=r'$\Theta^I$')
plt.plot(r, a_2, label=r'$\Theta^{II}$')
plt.legend()
plt.xlabel("distance (Å)")


Out[33]:
Text(0.5, 0, 'distance (Å)')

In [37]:
r = np.linspace(-1, 11, 1000)
a = interaction_well_2(r, 0, 3, kappa)
a_2 = interaction_well_2(r, 3, 6, kappa)
a_3 = interaction_well_2(r, 6, 9, kappa)
plt.plot(r, a, label=r'$\Theta^1$')
plt.plot(r, a_2, label=r'$\Theta^2$')
plt.plot(r, a_3, label=r'$\Theta^3$')
plt.legend()
plt.xlabel("Density")


Out[37]:
Text(0.5, 0, 'Density')

In [ ]: