--- /dev/null
+import numpy as np
+import matplotlib.pyplot as plt
+from os import mkdir
+
+# Refer to parameters.txt for documentation
+dt = 0.001
+t_cue = 1.0
+cue_scale = 1.0
+perceived = 0 # ???
+time_scale = 0.4
+steps = 100
+
+class Alpha(object):
+ def __init__(self):
+ self.x = np.logspace(0, 3, steps)
+ self.y = 1 / (1 + (999 * np.exp(-0.1233 * (self.x / self.offset))))
+
+ self.gain = []
+ self.bias = []
+
+ def calcgb(self, gaind, biasd):
+ for i in range(steps):
+ y = self.y[i]
+ self.gain.append(1 + gaind * y)
+ self.bias.append(1 + biasd * y)
+
+ def plot(self):
+ try:
+ mkdir("./out")
+ except FileExistsError:
+ pass
+
+ out = f"./out/{self.__class__.__name__}"
+ plt.plot(self.x, self.y)
+
+ plt.xlabel("Norepinephrine concentration (nM)")
+ plt.ylabel("Activity (%)")
+ plt.title("Norepinepherine Concentration vs Neuron Activity in " +
+ self.pretty)
+
+ plt.vlines(self.ki, 0, 1, linestyles="dashed")
+ plt.text(1.1 * self.ki, 0.1, "Affinity")
+
+ plt.hlines(0.5, 0, 1000, linestyles="dashed")
+ plt.text(1, 0.51, "50%")
+
+ plt.xscale("log")
+ gc = plt.gca()
+ gc.set_yticklabels(['{:.0f}%'.format(x * 100) for x in gc.get_yticks()])
+
+ plt.draw()
+ plt.savefig(f"{out}-norep-activity.png", dpi=1000)
+
+ #######################################################################
+
+ plt.plot(self.x, self.gain)
+
+ plt.xlabel("Norepinephrine concentration (nM)")
+ plt.ylabel("Gain")
+ plt.title(f"Concentration vs Gain in {self.pretty}")
+
+ plt.draw()
+ plt.savefig(f"{out}-concentration-gain.png", dpi=1000)
+
+ #######################################################################
+
+ plt.plot(self.x, self.bias)
+
+ plt.xlabel("Norepinephrine concentration (nM)")
+ plt.ylabel("Bias")
+ plt.title("Concentration vs Bias in " + self.pretty)
+
+ plt.draw()
+ plt.savefig(f"{out}-concentration-bias.png", dpi=1000)
+
+class Alpha1(Alpha):
+ def __init__(self):
+ self.ki = 330
+ self.offset = 5.895
+ self.pretty = "α1 Receptor"
+ self.gaind = 0.1
+ self.biasd = 0.1
+ super().__init__()
+
+ def calcgb(self):
+ super().calcgb(self.gaind, self.biasd)
+
+class Alpha2(Alpha):
+ def __init__(self):
+ self.ki = 56
+ self.offset = 1
+ self.pretty = "α2 Receptor"
+ self.gaind = -0.04
+ self.biasd = -0.02
+ super().__init__()
+
+ def calcgb(self):
+ super().calcgb(self.gaind, self.biasd)
+
+def main():
+ plt.style.use("ggplot")
+
+ a1 = Alpha1()
+ a1.calcgb()
+ a1.plot()
+
+ a2 = Alpha2()
+ a2.calcgb()
+ a2.plot()
+
+if __name__ == "__main__":
+ main()