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]:
In [12]:
r = np.linspace(0, 10, 1000)
a = interaction_well(r, 2.5, 6.5, 5)
plt.plot(r, a)
Out[12]:
In [13]:
r = np.linspace(1.8, 4, 1000)
a = interaction_well(r, 2.5, 6.5, 5)
plt.plot(r, a)
Out[13]:
In [10]:
r = np.linspace(1.8, 4, 1000)
a = interaction_well(r, 3.5, 6.5, 5)
plt.plot(r, a)
Out[10]:
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]:
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])
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])
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])
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]:
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]:
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]:
In [25]:
np.arange(-40, 40, 4)
Out[25]:
In [10]:
r = np.linspace(-15, 15, 1000)
a = interaction_well(r, -5, 5, 0.2)
plt.plot(r, a)
Out[10]:
In [11]:
r = np.linspace(-15, 30, 1000)
a = interaction_well(r, -10, 20, 10)
plt.plot(r, a)
Out[11]:
In [15]:
r = np.linspace(-12, -8, 1000)
a = interaction_well(r, -10, 20, 5)
plt.plot(r, a)
Out[15]:
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]:
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]:
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]:
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]:
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]:
In [53]:
r[bb][-1] - r[bb][0]
Out[53]:
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])
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]:
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]:
In [ ]: